`

java8 Stream 一行代码实现列表去重

    博客分类:
  • Java
 
阅读更多

通常情况下,实现列表去重的方式有:

  1. 创建一个新的result列表,循环原列表,如果元素不在result列表中,则放入
  2. 创建一个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());

 

分享到:
评论

相关推荐

    Java去重txt文件内容(按行)

    总的来说,这个Java项目展示了如何利用Java 8的Stream API和并行流特性来高效地处理文本文件,实现行级别的去重功能。这种技术对于处理大量文本数据,尤其是需要进行清洗和预处理的情况非常有用。在实际应用中,可以...

    如何实现java8 list按照元素的某个字段去重

    总的来说,Java 8的Stream API为处理列表数据提供了强大而灵活的方式,使得去重操作变得简单易行。通过理解并熟练运用这些方法,开发者可以提高代码的可读性和效率,更好地应对各种数据处理场景。

    671.669.JAVA基础教程_动态代理与Java8新特性-函数式接口的介绍(671).rar

    这种语法简化了代码,使得多行代码可以被一行简洁的Lambda表达式替代。 Java 8的Stream API是另一个显著的新特性,它提供了一种以声明性方式处理数据的机制。Stream API支持多种操作,如过滤、映射、聚合等,可以在...

    字符串去重复

    ")`这行代码可能意味着开发者原本打算再次分割`res`,以获取去重后的用户ID列表。然而,在当前的代码段中,这部分没有被执行,因为它是注释掉的。 在实际应用中,可以使用多种方法来实现字符串去重复,比如使用Java...

    华为OD机试C卷- 猜密码(Java & JS & Python).md-私信看全套OD代码及解析

    ### 华为OD机试C卷 - 猜...通过以上分析和代码实现,我们可以看到这是一个典型的组合问题,需要利用回溯算法来解决。在实际的应用场景中,这种类型的算法可以广泛应用于密码破解、数据安全等领域,具有非常重要的意义。

    apache poi对应的excel去重读取输出,word 字符替换成文字或图片

    - 考虑使用并行处理技术,如Java的并发库或Stream API,以加速数据处理。 6. **测试**: - 编写单元测试,确保各个功能模块正常工作。 - 可以使用Mockito模拟文件输入输出,测试核心逻辑的正确性,避免每次测试...

    JAVA+ORALCE面试题汇总

    ### JAVA+ORACLE面试题汇总知识点解析 #### 1. Overload、Override与Overloaded的区别...UNION自动去重,UNION ALL则保留重复行。 以上知识点涵盖了Java和Oracle领域的一些常见面试题,希望能帮助到即将面试的朋友。

    过滤一些重复记录的方法

    在Java中,可以创建HashSet或利用Java 8的Stream API来去重。 4. **数据库索引**:对于大型数据库,可以在创建表时为唯一性字段建立唯一索引,这样在插入重复记录时,数据库会自动拒绝,从而避免了重复。 在给定的...

    Streams:带有txt文件的Java

    在Java编程语言中,"Streams"是一个核心概念,特别是在Java 8及更高版本中引入的新的API,称为“流API”(Stream API)。这个API极大地增强了处理集合数据的能力,允许程序员以一种声明式的方式处理数据,使代码更加...

Global site tag (gtag.js) - Google Analytics