【问题标题】:How to map List of objects to Map of values from the given object using java 8如何使用java 8将对象列表映射到给定对象的值映射
【发布时间】:2016-01-29 13:42:56
【问题描述】:

如何在不使用 Java 8 创建任何其他类的情况下将 List<File> 映射到 Map<String, List<String>>

key 应该是父文件名,list 应该包含所有子文件名。

这将返回Map<String, List<File>>,所以它不会编译。

Function<File, String> parentName = (f) -> f.getParent();
List<File> files = new ArrayList<>();

Map<String, List<String>> var = files
        .stream()
        .collect(Collectors.groupingBy(parentName));

【问题讨论】:

标签: java java-stream


【解决方案1】:

您需要将 mapping 下游收集器添加到 group by 操作,该操作将 File Stream 元素映射到其名称并将这些名称收集到 List

Map<String, List<String>> var = 
    files.stream()
         .collect(Collectors.groupingBy(
             File::getParent,
             Collectors.mapping(File::getName, Collectors.toList())
         ));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多