Java 比较两个List的差异,并取出不同的对象

来源:互联网 发布:视频数据分析的应用 编辑:程序博客网 时间:2024/05/22 06:34

前段时间需要获得两个list的不同的对象信息,今天记录下来,作为一个备忘,也希望能对别人有所帮助。

public class Student {        private int id;    private String name;    private String email;        Student(int id,String name,String email){    this.id = id;    this.name = name;    this.email = email;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    //重写equals方法只要age相等,我们就认为对象两个相等  @Override  public boolean equals(Object obj) {  if(obj instanceof Student){  Student st=(Student) obj;  return (name.equals(st.name));  }else{ return super.equals(obj);    }  }  @Override  public int hashCode() {  return name.hashCode();  }}
/** *  * @param list1 * @param list2 * @return */private static List<Student> getDifferent(List<Student> prelist, List<Student> curlist) {         List<Student> diff = new ArrayList<Student>();                 Map<Student,Integer> map = new HashMap<Student,Integer>(curlist.size());         for (Student stu : curlist) {             map.put(stu, 1);         }         for (Student stu : prelist) {             if(map.get(stu)!=null)             {                 map.put(stu, 2);                 continue;             }             diff.add(stu);         }         for(Map.Entry<Student, Integer> entry:map.entrySet())         {             if(entry.getValue()==1)             {                 diff.add(entry.getKey());             }         }        for(Student stu:diff){            System.out.println(" the differ "+stu.getId()+"\t"+stu.getName());        }        return diff;            }


0 0