在第一个ArrayList表中存放多条记录A,B ,C,D,E.....等对象,
在第二个ArrayLsit表中存放第一个表中的子集,如(A,E等对象)。
我如何能得出第一个ArrayList表的补集,即第一个ArrayList表中除去第二个ArrayList后剩余的结果

解决方案 »

  1.   

    List<Character> list1 = new ArrayList<Character>();
    for (char c = 'A'; c <= 'E'; c++)
    list1.add(new Character(c));List<Character> list2 = new ArrayList<Character>();
    list2.add(new Character('A'));
    list2.add(new Character('E'));list1.removeAll(list2);
    不过这个操作是直接从list1里面删除的,如果需要保留list1的元素的话,需要预先手工拷贝一份
      

  2.   

    第二个ArrayLsit 调用其迭代器进行循环。 
    然后第一个ArrayLsit 换成ListedList 使用remove()方法最后在把ListedList 换回ArrayLsit注: ListedList的添加删除要比ArrayLsit效率快 
         ArrayLsit 的查询要比ListedList 效率快
      

  3.   

    不太明白你的意思.看看这个对你有没有帮助
    http://community.csdn.net/Expert/topic/5319/5319310.xml?temp=.1032526
      

  4.   

    回复人:Dan1980() ( 五级(中级)) 信誉:98  2007-01-26 12:45:54  得分:0
    list1.removeAll(list2);
    ===============================
    这个不错。加个条件就更好了。
    if(list1.containAll(list2)){
    list1.removeAll(list2);
    }
      

  5.   

    ArrayList<String> list1 = new ArrayList<String>();
    list1.add("A");
    list1.add("B");
    list1.add("C");
    list1.add("D");
    list1.add("E"); ArrayList<String> list2 = new ArrayList<String>();
    list2.add("B");
    list2.add("E"); list1.removeAll(list2);

    for(String s:list1){
    System.out.println(s);
    }