ArrayList array1=new ArrayList();
    ArrayList array2=new ArrayList();
    array1.add("111");array1.add("222");array1.add("333");array1.add("444");array1.add("555");
    array2.add("aaa");array2.add("111");array2.add("bbb");array2.add("222");array2.add("ccc");array2.add("333");
    System.out.println(array1);
    System.out.println(array2);
    ArrayList newArray=(ArrayList)array1.clone();//clone,newArray:[111,222,333,444,555]
    array1.removeAll(array2);//这一步操作之后,array1:[444,555]
    newArray.removeAll(array1);//这一步操作之后,newArray:[111,222,333],这个应该就是你需要的结果了
    System.out.println(newArray);

解决方案 »

  1.   

    用两次removeall效率多低呀,其实removeall也不过就是遍历一个list,然后另一个list使用contains函数来判断,这样的话还不如直接自己写,只需要一次就成功了. List array1 = new ArrayList();
    List array2 = new ArrayList();
    array1.add("111");
    array1.add("222");
    array1.add("333");
    array1.add("444");
    array1.add("555");

    array2.add("aaa");
    array2.add("111");
    array2.add("bbb");
    array2.add("222");
    array2.add("ccc");
    array2.add("333");

    List resultList = new ArrayList();

    for (Iterator i = array1.iterator(); i.hasNext();) {
    Object temp = i.next();
    if (array2.contains(temp)) {
    resultList.add(temp);
    }
    }最后的relustList就是你想要的东西
      

  2.   

    晕倒
    用for来循环contains,效率更低
      

  3.   

    楼上的.
    如果你看了removeall的源代码你就不会这样说了,里面就是这样处理的,而且你还用了两次.