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

【面试题】删除两个数组中相同的元素…………你有什么简便方法吗?
例如有如下2个list:
list1{1,2,3,4,4,5}
list2{3,3,4,5,6,6,7}

程序运行后要求两个list内容如下
list1{1,2}
list2{6,6,7}

我只能想到一个记住下标,然后挨个remove(index)的方法,觉得太笨了,还有什么好方法吗??

------解决方案--------------------
Java code


        List<String> l1 = new ArrayList<String>();
        List<String> l2 = new ArrayList<String>();
        l1.add("1");
        l1.add("2");
        l1.add("3");
        l1.add("4");
        l1.add("4");
        l1.add("5");
        l2.add("3");
        l2.add("3");
        l2.add("4");
        l2.add("5");
        l2.add("6");
        l2.add("6");
        l2.add("7");
        Object[] o = Arrays.copyOf(l1.toArray(), l1.size());
        l1.removeAll(l2);
        List<Object> l3 = Arrays.asList(o);
        l2.removeAll(l3);
        System.out.println(l1);
        System.out.println(l2);

------解决方案--------------------
List listOne=new ArrayList<Integer>(Arrays.asList(1,2,3,4,4,5));
List listTwo=new ArrayList<Integer>(Arrays.asList(3,3,4,5,6,6,7));
listOne.removeAll(listTwo);
System.out.println(listOne);

//[1, 2]

这样就可以了!