现在又2个list,里面都保存相同的bena对象,如何把一个list里的对象复制到另外一个list里,并且list中完全相同的对象不会复制,也就是说只复制不同的对象,谢谢

解决方案 »

  1.   

    最好在数据存放进第一个list就用equal判断是否重复,否则好像不太好搞
      

  2.   

    定义一个空的Set,把两个list中的元素依次往这个set中存放,就可以了。那么Set中的元素就是不重复的 
      

  3.   

    定义一个空的Set,把两个list中的元素依次往这个set中存放,就可以了。那么Set中的元素就是不重复的 
      

  4.   

    把第一个list赋给另外一个list,然后第一个的list和那个的list比较,把不相同的放到第二个list中
    呵呵,有点儿复杂,我也不怎么会用,还没有处理过你这样的问题
      

  5.   

    借助set来实现,首先把目标list的元素都放到set里面,然后再for循环源list,查一下set里面是不是有了,没有就添加到set同时添加到目标list
      

  6.   

    借助set来实现,首先把目标list的元素都放到set里面,然后再for循环源list,查一下set里面是不是有了,没有就添加到set同时添加到目标list
      

  7.   

    支持二楼,用set就没有重复的。
      

  8.   

    也可以用程序自己来判断,如果已经在list里包含该对象,则不要 add
      

  9.   

    用set来实现,直接往里面加就可以了,不用考虑重复的问题。
      

  10.   

    给个例子参考一下/*javabean对象*/import java.io.Serializable;public class TUser implements Serializable{    
        private String name;
        private Integer age;  
        
        public TUser(){}
        
        public TUser(String name,Integer age){
            this.name=name;
            this.age=age;
        }
       
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
      
       
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }    @Override
        public int hashCode() {
            final int PRIME = 31;
            int result = 1;
            result = PRIME * result + ((age == null) ? 0 : age.hashCode());
            result = PRIME * result + ((name == null) ? 0 : name.hashCode());
            return result;
        }
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            final TUser other = (TUser) obj;
            if (age == null) {
                if (other.age != null)
                    return false;
            } else if (!age.equals(other.age))
                return false;
            if (name == null) {
                if (other.name != null)
                    return false;
            } else if (!name.equals(other.name))
                return false;
            return true;
        }
       /*测试*/
    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Set;import model.TUser;
    public class User2Test {
        public static void main(String[] args) {
            User2Test t=new User2Test();
            t.test();
        }
        
        @SuppressWarnings("unchecked")
        public void test(){
            List list=new ArrayList();
            list.add(new TUser("John",20));
            list.add(new TUser("Erica",22));
            list.add(new TUser("John",20));
            list.add(new TUser("Mark",20));
            list.add(new TUser("Smith",20));
            list.add(new TUser("Erica",22));
            list.add(new TUser("Lucy",22));
           //显示list下的所有数据
            show(list.iterator());
           
            System.out.println("================");
            Set set=new HashSet();
            set.addAll(list);//将集合添加到set
            
            //显示set下的所有数据
            show(set.iterator());
            
            System.out.println("================");
            List list2=new ArrayList();
            list2.addAll(set);
            show(list2.iterator());//显示list2下的所有数据
        }
        
       //显示数据
        public void show(Iterator it){        
            while(it.hasNext()){
                TUser user=(TUser)it.next();
                System.out.println(user.getName()+" "+user.getAge());
            }
        }
          
    }说明:javabean对象必须重写hashcode,equals方法,因为判断两个javabean对象相同,我们只要它的内容相同就可以了,而不是指向相同的地址。
    如果去掉javabean中的hashcode和equals方法,将不会过滤调内容相同的对象,只有指向相同的地址才会过滤调。
      

  11.   

    反正都是要两个LIST里的合集,都从LIST1里复制到LIST2里,LIST2不就是你想要的了吗,只不过可能效率差了点。。
      

  12.   


    干嘛有开源的不用??import org.apache.commons.beanutils.BeanUtils;BeanUtils.populate(对象1, 对象2);
    要求1、2是同一个对象的不同实现,可以把对象2中的值copy到1中对应的值如果不理解 可以测试一下
      

  13.   

    1.用set
    2.如果你的bean有对应的key话,也就是说有唯一识别值,那效率低点的做法是循环比较了
    3.19楼提到的开源的我到没有用过