-
String去重
List<String> strList = Arrays.asList("a", "a", "b", "b", "c"); strList.stream().distinct().collect(Collectors.toList()).forEach(System.out::println);
输出结果:
-
其他自定义对象去重,则必须重写hashCode(),equal()方法,不然去重失败。
因为stream().distinct()在执行的时候,会调用Object类原始的hashCode(),equal()方法来判断对象是否相等,如果不重写的话equal()会一直返回false,从而去重失败。附Object类的源码:
public native int hashCode(); // Object默认使用的是本地的hashcode()方法
public boolean equals(Object obj) { return (this == obj); // 只有对象的地址都一样的时候才返回true }
版权声明:本文为qq_32310499原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。