如何使用Java 8流以及自定义列表和地图供应商将List<V>转换为Map<K,List<V>>?
2022-09-01 04:27:56
很容易转换为.例如:List<V>
Map<K, List<V>>
public Map<Integer, List<String>> getMap(List<String> strings) {
return
strings.stream()
.collect(Collectors.groupingBy(String::length));
}
但我想和我自己的供应商一起做。List
Map
我想出了这个:
public Map<Integer, List<String>> getMap(List<String> strings) {
return strings.stream()
.collect(Collectors.toMap(
String::length,
item -> {List<String> list = new ArrayList<>(); list.add(item); return list;},
(list1, list2) -> {list1.addAll(list2); return list1;},
HashMap::new));
}
问题:有没有更简单,更不冗长或更有效的方法?例如,像这样的东西(这不起作用):
return strings.stream()
.collect(Collectors.toMap(
String::length,
ArrayList::new,
HashMap::new));
如果我只需要定义供应商,而不需要定义供应商,该怎么办?List
Map