Stream去重

  • Post author:
  • Post category:其他


  1. String去重

        List<String> strList = Arrays.asList("a", "a", "b", "b", "c");
        strList.stream().distinct().collect(Collectors.toList()).forEach(System.out::println);
    

    输出结果:

    在这里插入图片描述

  2. 其他自定义对象去重,则必须重写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 版权协议,转载请附上原文出处链接和本声明。