永发信息网

关于静态类, 和ArrayList

答案:6  悬赏:10  手机版
解决时间 2021-04-30 12:29

我在一个类中只定义了三个静态成员, 类型是ArrayList。 在其他类的方法中调用他们其中的一个 另两个也跟着变! 这是为什么? 该怎样解决?

后来把这三个ArrayList 放在三个类里了, 还是这样! 调用一个ArrayList得clear();

WeixuanQueID.WeiXuan.clear();我清楚的是WeixuanQueID.WeiXuan但是

int a = random.nextInt(ZancunQuestionID.allquestion.size()); 这句话又报错了!

谁能告诉我为什么!!

最佳答案
很明显,因为你不是通过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()); }

你用的是同一个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(); 应该就可以了

大哥 你写的程序可以说的 千疮百孔 漏洞百出啊

我们来看这段程序:

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); }

ZancunQuestionID 这个类的代码提供下

看看程序

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大家好,17寸是多少里米
怎么控制任务管理器里的网络应用?
曾经的恋人很煽情的对你说想你,你们会怎样呢
为什么我手机上网下载某些铃声时,显示访问被
QQ音乐用户的图标怎么点亮
鬼泣的时装应该怎么班 ??
哥哥生日该送什么呢?
有关三角恋的慢歌
《中科学习记忆法》里对学习数学有帮助吗?
大家看看这个问题怎么办。怎么把下边的黑边消
诺基亚手机的耳麦插头是什么规格的
在5173买了诛仙2帐号怎么取消啊?不想要
秋天那个地方最美丽?
为什么我的电脑总是自动关机。
怎样鉴别计算机软件
推荐资讯
啥时候天上可以掉硬币啊
50级元神48技能全大概卖多少钱我想卖号
SD卡和TF卡有什么区别?
会一生只等候一个人么?
穿越火线下载完玩不了
毛绒皮的鞋子应该怎样清洗啊?
现在什么电脑最便宜,最好
阿凡达经典语录带翻译,能表达出一心一意为一
天龙八部里面力天龙和灵天龙哪个NB些?天龙属
重庆现在iPhone 3GS价格来一下
一个月的宝宝嘴里有马牙怎么去火效果快?
撸之神撸串吧地址在哪,我要去那里办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?