【问题标题】:Default Value for Map in Collectors.toMap() [duplicate]Collectors.toMap() 中地图的默认值 [重复]
【发布时间】:2019-12-21 05:16:50
【问题描述】:

需要使用Collectors.toMap()List<Object> 转换为Map<String,Long>,Long 值为零。

这里的Object指的是我自己定义的java类。

List<Test> list = new ArrayList<Test>(); list.add(X); list.add(Y);
Map<String,Long> map = list.stream().collect(Collectors.toMap(Test:getName,XXXX)));

我的预期输出:

{"x",0},{"Y",0}

【问题讨论】:

    标签: java collections java-8 java-stream


    【解决方案1】:

    您可以使用 lambda 表达式作为值:

    Map<String, Long> map = list.stream()
                               .collect(Collectors.toMap(Test:getName,x -> 0L,(a,b)->a));
    

    你也可以使用BigDecimal常量

    Map<String, Long> map = list.stream()
                               .collect(Collectors.toMap(Test:getName,x -> BigDecimal.ZERO.longValue(),(a,b)->a));
    

    【讨论】:

    • 我建议您在toMap() 中添加mergeFunction,这将使集合更加健壮。 list.stream() .collect(Collectors.toMap(Test:getName,x -&gt; 0L,(a,b)-&gt;a));
    猜你喜欢
    • 2020-08-26
    • 1970-01-01
    • 2016-10-31
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多