Java 8 将 List 转换为 Lookup Map

标签 java java-8 java-stream lookup collectors

我有一个电台列表,每个电台都有一个 radio 列表。我需要创建电台到电台的查找 map 。我知道如何使用 Java 8 stream forEach 来做到这一点:

stationList.stream().forEach(station -> {
    Iterator<Long> it = station.getRadioList().iterator();
    while (it.hasNext()) {
        radioToStationMap.put(it.next(), station);
    }
});

但我相信应该有更简洁的方法,比如使用 Collectors.mapping()

有人可以帮忙吗?

最佳答案

这应该可行,您不需要第三方。

stationList.stream()
    .map(s -> s.getRadioList().stream().collect(Collectors.toMap(b -> b, b -> s)))
    .flatMap(map -> map.entrySet().stream())
    .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

关于Java 8 将 List 转换为 Lookup Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257795/

相关文章:

java - 基于复杂匹配键的多个属性分组和聚合

java - 如何在 Java 8 中的两个流之间进行搜索

java - 如何在 Java 中使用 Jericho 查找自定义开始标记?

Java:下载总是停顿

java - 将动态数据集映射到 JFreeChart 中的不同轴

java - Stream.reduce(Float,BinaryOperator) BinaryOperator 指的是哪个功能接口(interface)方法?

java - 迷宫 2D 递归算法死胡同问题

java - 使用 Java8 Optional<T> 重构遗留代码

java - 简化的 Java 单行验证、赋值和返回

java-8 - Optional<T> 不处理空元素