示例Map>的inputMap:{"product":["132377","2123232","312335678","423432","5215566"],"order":["3174252","1468453","1264543","35723112","235775645"]}
1、使用forEach实现Map resultSet = new HashMap<>();
inputMap.forEach((k, v) -> resultSet.put(k, v.stream()
.mapToDouble(s -> computeScore(s)).sum()));
2、使用collect()实现Map finalResult = inputMap.entrySet()
.stream()
.collect(Collectors.toMap(
Entry::getKey,
e -> e.getValue()
.stream()
.mapToDouble(str -> computeScore(str))
.sum()));
或Map finalResult = inputMap.entrySet()
.stream()
.map(entry -> new AbstractMap.SimpleEntry( // maps each key to a new
// Entry
entry.getKey(), // the same key
entry.getValue().stream()
.mapToDouble(string -> computeScore(string)).sum())) // List mapped to
// List and summed
.collect(Collectors.toMap(Entry::getKey, Entry::getValue)); // collected by the same
// key and a newly
// calulcated value
3、Collect的使用
以stream的元素转变成一种不同的结果,可以是一个List,Set或Map。
例如:List filtered = persons .stream() .filter(p -> p.name.startsWith("P")) .collect(Collectors.toList()); System.out.println(filtered);
输出:[Peter, Pamela]