java List 去重

1.使用 jdk8 中 stream.distinct().collector

需要重写实体类中的 equals()和hashCode()方法

 

@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class SyncDataNodeInfo extends BaseEntity {

    private static final long serialVersionUID = 1L;
    /**
     * 当前节点ID
     */
    private String nodeId;

    /**
     * 当前节点name
     */
    private String currentNodeName;


    @Override
    public boolean equals(Object o){
        if(this == o){
            return true;
        }
        if(o == null || getClass() != o.getClass()){
            return false;
        }
        SyncDataNodeInfo syncDataNodeInfo = (SyncDataNodeInfo) o;
        return nodeId.equals(syncDataNodeInfo.nodeId);
    }

    @Override
    public int hashCode(){
        return Objects.hash(nodeId);
    }
}

public static void main(String[] args) {
        List<SyncDataNodeInfo> newSyncDataNodeInfoList = new ArrayList<>();
        SyncDataNodeInfo syncDataNodeInfo = new SyncDataNodeInfo();
        syncDataNodeInfo.setParentNodeId("111");
        syncDataNodeInfo.setCurrentNodeName("zzz");
        newSyncDataNodeInfoList.add(syncDataNodeInfo);
        
        newSyncDataNodeInfoList.stream().distinct().collect(Collectors.toList());
    }

  

 针对 List中的String和普通的int,long等可以直接使用,不需要重写equals和hashCode方法

stream().distinct().collect(Collectors.toList());

 

posted @ 2021-01-07 15:07  wangssd  阅读(111)  评论(0编辑  收藏  举报