很多小伙伴在开发中会遇到一个场景,就是List集合中存储的是类对象,我们想要根据类对象属性去重;这种场景该如何做呢?
解决办法:
大家都知道对象的equals默认是按照对象的应用地址去进行比较的,所以想要对象去重,关键就在于重写equals方法(重写了equals()必须也重写hashcode())
1.用IDEA, 在类中按 Alt + Insert 可以自动实现equals() 和 hashCode() 方法的重写
我的类只有一个name属性,重写代码如下:
2.使用JDK8新特性Stream流去重
list.stream().distinct().collect(Collectors.toList());
此时得到的就是去重后的list了
记住,重写了equals()必须重写hashcode()!!!