现有三个这样的list表  
List list1=new ArrayList(),
List list2 = new ArrayList(),比如说,list1 有A , B, C 这三个元素, list2 有 B , C , D这三个元素!
现在把这两个表做比较, list1和list2相同的元素的保留,list2中有的list1没有的也插入list1,list1中有list2中没有从list1中去除,
这样得到一个最后的结果是list1的元素是: B ,C ,D!!!我想到一种对list1 和list2样进行比较并得出结果 的方法,我这边有一个,不过不是很好,我想要一个效率高一点的,
请高手指教!!!

解决方案 »

  1.   

    list里是什么类型的?可以先排序,然后分别对2个list遍历一次就可以了。
      

  2.   

    代码:
    import java.util.LinkedList;
    import java.util.List;public class Test { public static void main(String[] args) {
    List<String> list1 = new LinkedList<String>();
    list1.add("A");
    list1.add("B");
    list1.add("C");
    List<String> list2 = new LinkedList<String>();
    list2.add("B");
    list2.add("C");
    list2.add("D");
    list1.retainAll(list2);
    list2.removeAll(list1);
    list1.addAll(list2);
    System.out.println(list1);
    }}
    输出:
    [B, C, D]
      

  3.   

    现在把这两个表做比较, list1和list2相同的元素的保留,list2中有的list1没有的也插入list1,list1中有list2中没有从list1中去除, 
    这样得到一个最后的结果是list1的元素是: B ,C ,D!!! list1 = list 2over!
      

  4.   

    对不起,我说现场情况吧..
    有一篇文章,里面包含三个图片A,B,C,我把这存在数据库里面,
    现在修改这篇文章,删除了A图片,保留了B,C图片,并增加了D图片,
    现在求怎么对数据库进行操作...
    也就是要从数据库删除A,并插入D!
    当关键是我要知道哪个是要被删除,哪个要被插入,哪个要被保留!!我自已做的一个方法里面用了太多的for循环还if条件,感觉不好!
    现在想求一个好的算法!!!
    谢谢主!!!感谢sagezk的方法,我正在试你写的方法!!!5楼你的意思我知道,你应该考虑方法而不是结果!!!
      

  5.   

    关注!
    另,数据库中如何存的图片?难道没有标识吗?就算以binary形式存在某一列中,也会有列名的不同吧?或者单独一张表放图片,那么,文章要引用这图片,也应该有个标识,如名字,id,才能保证从数据库取到正确的图片。
    不明白,LZ为什么会不知道哪个要被删除,尤其是都已经知道要删除"A"图片的情况下?