通常情况下,实现列表去重的方式有:
- 创建一个新的result列表,循环原列表,如果元素不在result列表中,则放入
- 创建一个HashSet,将列表作为构造参数传入
下面介绍一种简单、高效的去重方式,借助于java8新特性引入的Stream类。代码如下
package cn.zokoo.goods.entity.dto; import java.io.Serializable; import java.util.Date; import java.util.List; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * 商品分类 * * @author Jack chen * @email 123@qq.com * @date 2018-12-10 17:14:36 */ @Data @NoArgsConstructor @AllArgsConstructor @JsonInclude(JsonInclude.Include.NON_NULL) public class MchCatDTO implements Serializable { private static final long serialVersionUID = 1L; /** * 分类编号 */ private Integer catId; /** * 分类编码 */ private String catCode; /** * 分类名称 */ private String catName; /** * 上级分类编码 */ private String parentCatCode; /** * 排序 */ private Integer sortOrder; // 商户号 private String mchNo; //新增类型 1-导入 2-普通品类 3-活动品类 private String catType; /** * 分类图标 */ private String catIcon; /** * 是否显示:0-否 1-是 */ private String isShow; /** * 备注 */ private String remark; /** * 版本号 */ private Integer version; /** * 创建时间 */ private Date createTime; /** * 创建操作员 */ private String createOprNo; /** * 修改时间 */ private Date modifiedTime; /** * 修改操作员 */ private String editOprNo; private List<MchCatDTO> childList; private Long count; public MchCatDTO(String catCode, String parentCatCode) { this.catCode = catCode; this.parentCatCode = parentCatCode; } public MchCatDTO(String catCode, String parentCatCode,String catName) { this.catCode = catCode; this.parentCatCode = parentCatCode; this.catName = catName; } public MchCatDTO(Integer catId, String catCode, String catName, Integer sortOrder, String catIcon) { this.catId = catId; this.catCode = catCode; this.catName = catName; this.sortOrder = sortOrder; this.catIcon = catIcon; } public MchCatDTO(String catCode,String catName,String parentCatCode,Long count,String catType,Date createTime) { this.catCode = catCode; this.parentCatCode = parentCatCode; this.catName = catName; this.count = count; this.catType = catType; this.createTime = createTime; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; MchCatDTO cat = (MchCatDTO) o; return Objects.equals(this.catCode, cat.catCode) && Objects.equals(this.catName, cat.catName); } @Override public int hashCode() { return Objects.hash(this.catCode,this.catName); } }
去重解决:catList = catList.stream().distinct().collect(Collectors.toList());
相关推荐
Java8 Stream教程,简单易懂
主要介绍了Java中对List去重, Stream去重的问题解答,文中给大家介绍了Java中List集合去除重复数据的方法,需要的朋友可以参考下
实用的 Java 8 Stream 代码
主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
java stream doc.
实用方法,使用java8 stream对List 分组,去重,自定义排序
java 8 中Stream使用方式案例
主要介绍了如何在java 8 stream表达式实现if/else逻辑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
java8中通过stream流对List类型进行一些操作的测试Demo类
Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda,给我们操作集合(Collection)提供了极大的便利。 Stream将要处理的元素集合看作一种流,在流的过程中,借助`Stream API`对流中的...
Java8 Lambda、Stream实例代码
java8流源码Java8InAction 该存储库包含 Java 8 实战:Lambdas、Streams 和函数式编程一书中示例和测验的所有源代码。 您可以在这里购买这本书:或在亚马逊上 所有示例的源代码都可以在目录中找到 第 1 章:Java 8:...
主要介绍了java8 stream自定义分组求和并排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java8流源码Java8 Java8中的一些例子 此存储库包含一些用于检查 Java 8 功能的 Java 应用程序示例 例子.java 使用流从对象列表创建 Map 和 Set 基于POJO创建json AccountParser.java 和 JSONParser.java 从 API 读取...
Speedment:一个数据库访问库它利用了Java 8 Stream API进行查询
Stream API from Java 8 rewritten on iterators for Java 7 and below. Includes Functional interfaces (Supplier, Function, Consumer etc); Stream/IntStream/LongStream/DoubleStream (without parallel ...
主要介绍了java8 stream 由一个list转化成另一个list案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
java.util.stream.Stream:Stream 代码示例
java8流源码Java8InAction 该存储库包含 Java 8 实战:Lambdas、Streams 和函数式编程一书中示例和测验的所有源代码。 您可以在这里购买这本书:或在亚马逊上 所有示例的源代码都可以在目录中找到 第 1 章:Java 8:...
主要给大家介绍了关于java8 stream的分组功能的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java8具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧