首先List去重方法很简单。
java8里
list是对象A的list
ArrayList<A> list1= (ArrayList<WXNRCELL>)list.stream().distinct().collect(Collectors.toList()); 而这段话里。判断重复的方式是通过对象A的equlas方法和hashcode方法判断两个对象是否相等。
Set同理。
判断逻辑是先判断hashcode。如果不同直接返回不同。如果hashcode相同就使用equlas判断是否相等,因为hashcode是散列函数,在输入相同的情况下,这个算法一定相同。所以。当hash都不同的时候。这两个值一定不同。但是hash算法输入不同也可能结果一样。所以当hash相同。输入可能是不同。这时候就需要判断equlas。
代码如下
@Override public boolean equals(Object obj) { if(this==obj){ return true;} if(obj==null){ return false;} if(obj instanceof User){ User s = (User)obj; if(&&this.name== s.getName()&&this.age==s.getAg){ return true; } } return false; } @Override //lazy public int hashCode() { System.out.println( Objects.hash(name, age)); return Objects.hash(name, age); }