【发布时间】:2018-06-12 18:43:39
【问题描述】:
我有一部分来自 Map 的 lambda 语句,我不太明白。
.collect(Collectors.toMap(Map.Entry::getKey,
Map.Entry::getValue, (String, Double) -> String,
LinkedHashMap::new);
这是我认为的意思:
Map.Entry::getKey is stating variable String,
Map.Entry::getValue is stating variable Double
不太明白什么是 (String, Double) -> String, LinkedHashMap::new。 它是在创建一个以 String 作为键值的 LinkedHashMap 吗?但是为什么需要 Double in (String, Double) 呢?
另一个属于 Map 的示例
.collect(Collectors.groupingBy(String::toLowerCase, TreeMap::new, Collectors.counting());
then followed by...
.collect(Collectors.groupingBy(entry ->
entry.getKey().charAt(0), TreeMap::new, Collectors.toList());
它们到底是什么意思?
【问题讨论】:
-
查看文档docs.oracle.com/javase/8/docs/api/java/util/stream/… 有该 groupingBy 方法的三个签名,每个签名都有一个描述准确描述做什么的描述
-
除非
String是当前范围内的变量,否则(String, Double) -> String无效(即使使用类名声明变量已经够糟糕了)。 -
(String, Double) -> String与(a, b) -> a相同。String和Double是变量名。似乎写它的人不知道他们在做什么,或者他们试图混淆阅读它的人。
标签: java lambda collections