当前位置: 代码迷 >> J2SE >> 求高效率算法:ArrayList中删除另外一个ArrayList中存在的对象
  详细解决方案

求高效率算法:ArrayList中删除另外一个ArrayList中存在的对象

热度:5903   发布时间:2013-02-25 00:00:00.0
求高效算法:ArrayList中删除另外一个ArrayList中存在的对象。
如题,有两个List:
Java code
List<String> list1 = new ArrayList<String>();        List<String> list2 = new ArrayList<String>();                list1.add("1");        list1.add("2");        list1.add("3");        list1.add("4");        list1.add("5");        list2.add("1");        list2.add("3");        list2.add("5");

现在要将list1中的1,3,5删除,要求效率越高越好。

我自己写了个,感觉效率很差!
Java code
public static void main(String[] args) {        List<String> list1 = new ArrayList<String>();        List<String> list2 = new ArrayList<String>();                list1.add("1");        list1.add("2");        list1.add("3");        list1.add("4");        list1.add("5");                list2.add("1");        list2.add("3");        list2.add("5");                boolean restart = false;        int i =0;        out:        for( ;i<list1.size();){            int j=0;            for(;j<list2.size();j++){                if(list1.get(i).equals(list2.get(j))){                    list1.remove(list1.get(i));                    restart = true;                    break;                }            }            if(j == list2.size()){                restart = false;            }            if(restart){                i = 0;                continue out;            }else{                i++;            }        }    }


------解决方案--------------------------------------------------------
重写一下Person类的equals方法,改成当和其他类比较时,只要name相同就返回true.
 再同样的removeAll应该就可以了... LZ不妨试试.
------解决方案--------------------------------------------------------
探讨

8L能给个列子吗
  相关解决方案