前段时间需要获得两个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;
}