关于静态类, 和ArrayList
解决时间 2021-04-30 12:29
- 提问者网友:抽煙菂渘情少年
- 2021-04-30 06:10
我在一个类中只定义了三个静态成员, 类型是ArrayList。 在其他类的方法中调用他们其中的一个 另两个也跟着变! 这是为什么? 该怎样解决?
后来把这三个ArrayList 放在三个类里了, 还是这样! 调用一个ArrayList得clear();
WeixuanQueID.WeiXuan.clear();我清楚的是WeixuanQueID.WeiXuan但是
int a = random.nextInt(ZancunQuestionID.allquestion.size()); 这句话又报错了!
谁能告诉我为什么!!
最佳答案
- 五星知识达人网友:轮獄道
- 2021-04-30 07:10
很明显,因为你不是通过new来产生三个ArrayList,而是通过赋值的方式。
全部回答
在其他类的方法中调用他们其中的一个 另两个也跟着变! 这是为什么?
ArrayList c = new ArrayList();
ZancunQuestionID.allquestion=c;
WeixuanQueID.WeiXuan=c;
YiXuanQuesID.YiXuan=c
这样所有的list其实都指向一个实例。 操纵其中任意一个。都相当于修改了实例对象。所以所有的值都会变。
list里面只是装着对实例的引用地址。看下面的例子
public static void main(String[] args) {
// TODO Auto-generated method stub
List list1=new ArrayList(1);
List list2=new ArrayList(2);
List list3=new ArrayList(3);
List list4=new ArrayList(4);
list4.add("dadsa");
list1=list4;
list2=list4;
list3=list4;
list1.clear();
System.out.println(list4.size());
System.out.println(list1.size());
System.out.println(list2.size());
System.out.println(list3.size());
}
- 2楼网友:爱难随人意
- 2021-04-30 12:08
你用的是同一个ArrayList(),
ArrayList c = new ArrayList();
ZancunQuestionID.allquestion=c;
WeixuanQueID.WeiXuan=c;
YiXuanQuesID.YiXuan=c;
这个三个引用指向的是同一个ArrayList,所以你改变一个,所有都变了
如果你改成
ZancunQuestionID.allquestion=new ArrayList();
WeixuanQueID.WeiXuan=new ArrayList();
YiXuanQuesID.YiXuan=new ArrayList();
应该就可以了
- 3楼网友:底特律间谍
- 2021-04-30 10:29
大哥 你写的程序可以说的 千疮百孔 漏洞百出啊
我们来看这段程序:
public void setWEIXUAN(){
int i= 0;
//ArrayList allid = ZancunQuestionID.allquestion;
//ArrayList yixuanid = ;
WeixuanQueID.WeiXuan.clear();---这里你将数组清空
//weixuanid.clear();
System.out.println("添加之前未选题目的个数"+WeixuanQueID.WeiXuan.size());---这里获取数组长度
数组都已经清空 请问长度是多少?
System.out.println("添加前的值");
see(WeixuanQueID.WeiXuan);-----这里就不用说了 传过去的是一个空长度的数组后面的 也都不回执行了
System.out.println("**************");
while(i<ZancunQuestionID.allquestion.size()){
Object a =ZancunQuestionID.allquestion.get(i);
if(!YiXuanQuesID.YiXuan.contains(a)){
WeixuanQueID.WeiXuan.add(a);
System.out.println("判断输出"+a);
}
- 4楼网友:神也偏爱
- 2021-04-30 08:50
ZancunQuestionID 这个类的代码提供下
- 5楼网友:孤独的牧羊人
- 2021-04-30 08:26
我要举报
大家都在看
推荐资讯