Collectors.toMap()中Map的默认值

时间:2019-12-21 05:16:50

标签: java collections java-8 java-stream

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

这里的对象引用了我自己定义的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}

1 个答案:

答案 0 :(得分:7)

您可以使用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));