日期:2014-05-20  浏览次数:20834 次

有關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);

这样就可以去除重复了