java 8 stream list 转 map(toMap) Duplicate key 异常重现与解决

@Test
public void duplicateKeyDemo(){
    // 测试数据
    List<Commodity> list = this.getCommodityList();

    // 去重
    Map<String, Commodity> mapSuccess = list.stream()
            .collect(Collectors.toMap(Commodity::getCode,  Function.identity(),(commodity1, commodity2) -> commodity1));

    log.info("mapSuccess:{}", mapSuccess);

    // 异常
    Map<String, Commodity> mapError = list.stream()
            .collect(Collectors.toMap(Commodity::getCode, (p) -> p));

    log.info("mapError:{}", mapError);
}

private List<Commodity> getCommodityList(){
    List<Commodity> list = new ArrayList<>();
    list.add(new Commodity("apple8", 8888));
    list.add(new Commodity("apple8", 9999));
    list.add(new Commodity("huawei", 6666));
    list.add(new Commodity("xiaomi", 5555));
    return list;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容