有關ArrayList 問題
例如我有一個 :list
listspeed (x,y,z,1,2,3,4) <------list里所含有的物件(即listspeed.get(0)=x)
現在有另一個list
listadv (a,b,c,4,5,6) <------- 也是list里所含有的物件
如果我想將兩個list 的東西結合
listspeed.add(listadv) <--這樣寫法對嗎?
listspeed = (x,y,z,1,2,3,a,b,c,4,5,6) <--會得到這個結果嗎?
另一個問題,如果我用了listspeed.clear();之後還可以用listspeed.add(obj)嗎?
我想做到,某個情況就把listspeed所有內容清除,但遇到另一個情況,我又要把東西重新放進listspeed里,可以嗎?
------解决方案--------------------listspeed.add(listadv) <--這樣寫法對嗎?
listspeed = (x,y,z,1,2,3,a,b,c,4,5,6) <--會得到這個結果嗎?
-----------------------------------------
试一下就知道了 不会 遍历第2个放到第一个里 还要判断是否重复
------解决方案--------------------一个问题
listspeed (x,y,z,1,2,3,4)
listadv (a,b,c,4,5,6)
ArrayList arr = new ArrayList();
arr.add(listspeed );
arr.add(listadv );
二个问题
个人觉得可以
------解决方案--------------------第一个问题:
listspeed.add(listadv)不会得到
(x,y,z,1,2,3,a,b,c,4,5,6)
这样的结果,
而得到的是
(x,y,z,1,2,3,(a,b,c,4,5,6))
这样的结果,因为listadv是整个作为一个元素加到listspeed中的。
楼上的方法也不对,楼上的代码结果是
((x,y,z,1,2,3),(a,b,c,4,5,6))
也不是楼主想要的。
正确应该用addAll(),即
listspeed.addAll(listadv)
------解决方案--------------------list a;
list b
List ab = new ArrayList();
ab=a;
ab.add(b);
------解决方案--------------------放到 set 里面在取出来就没有重复了
------解决方案--------------------关于第一个问题应该是不行的,与放进去的顺序无关的
------解决方案-------------------- for(Iterator it =listadv.iterator();it.hasNext();)
{
Object elm = it.next();
if(listspeed.contains(elm))
{
listspeed.remove(elm);
}
listspeed.add(elm);
}
listadv ==null;
应该就这样写了,自己在封装一下
------解决方案-------------------- 这样无法承受大数据量(很慢)
---------------------------
for(Iterator it =listadv.iterator();it.hasNext();)
{
Object elm = it.next();
if(listspeed.contains(elm))
{
listspeed.remove(elm);
}
listspeed.add(elm);
}
listadv ==null;
这样可能小数据量的时候慢点,但它可以承受大数据量(会快很多)
-------------------
Set set = new HashSet();
set.addAll(this.al1);
this.al1.clear();
this.al1.addAll(set);
这样就可以去除重复了