/**
* 将List分组为Map
*
* @param source
* @param classifier
* @param <K>
* @param <V>
* @return
*/
public static <K, V> Map<K, List<V>> groupByFunction(List<V> source, Function<V, K> classifier) {
if (source == null || source.isEmpty()) {
return Collections.emptyMap();
}
return source.stream().collect(Collectors.groupingBy(classifier, LinkedHashMap::new, Collectors.toList()));
}
/**
* 将List转为Map(一对一)
*
* @param source
* @param classifier
* @param <K>
* @param <V>
* @return
*/
public static <K, V> Map<K, V> toMapByFunction(List<V> source, Function<V, K> classifier) {
if (source == null || source.isEmpty()) {
return Collections.emptyMap();
}
Map<K, List<V>> sourceMap = groupByFunction(source, classifier);
Map<K, V> targetMap = new HashMap<>();
sourceMap.forEach((k, v) -> {
targetMap.put(k, v.get(0));
});
return targetMap;
}
函数式编程-ListToMap
最新推荐文章于 2023-06-08 11:01:28 发布