栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从地图列表创建地图

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从地图列表创建地图

您可以使用Java 8进行以下操作:

private void init() {    List<Map<Integer, String>> mapList = new ArrayList<>();    Map<Integer, String> map1 = new HashMap<>();    map1.put(1, "String1");    mapList.add(map1);    Map<Integer, String> map2 = new HashMap<>();    map2.put(2, "String2");    mapList.add(map2);    Map<Integer, String> map3 = new HashMap<>();    map3.put(1, "String3");    mapList.add(map3);    Map<Integer, String> map4 = new HashMap<>();    map4.put(2, "String4");    mapList.add(map4);    Map<Integer, List<String>> response = mapList.stream() .flatMap(map -> map.entrySet().stream()) .collect(         Collectors.groupingBy(      Map.Entry::getKey,       Collectors.mapping(   Map.Entry::getValue,    Collectors.toList()      )         ) );    response.forEach((i, l) -> {        System.out.println("Integer: " + i + " / List: " + l);    });}

这将打印:

整数:1 /列表:[String1,String3]
整数:2 /列表:[ String2 ,String4]

说明(非常有必要),恐怕我无法解释每个细节,您需要首先了解Java 8中引入的

Stream
Collectors
API 的基础:

  1. Stream<Map<Integer, String>>
    从中获取
    mapList
  2. 应用

    flatMap
    运算符,该运算符将流大致映射到现有流中。
    在这里:我将全部转换
    Map<Integer, String>
    Stream<Map.Entry<Integer,String>>
    并将它们添加到现有流,因此现在它也是type
    Stream<Map.Entry<Integer, String>>

  3. 我打算将收集

    Stream<Map.Entry<Integer, String>>
    Map<Integer, List<String>>

  4. 为此,我将使用一个
    Collectors.groupingBy
    ,这产生一个
    Map<K, List<V>>
    基于一个分组功能,
    Function
    其映射
    Map.Entry<Integer, String>
    Integer
    在这种情况下。
  5. 为此,我使用了一个方法引用,该引用恰好实现了我想要的功能,即
    Map.Entry::getKey
    对a进行操作
    Map.Entry
    并返回
    Integer
  6. Map<Integer, List<Map.Entry<Integer, String>>>
    如果不做任何额外的处理,这时我将拥有一个。
  7. 为了确保获得正确的签名,我必须在中添加一个下游,该下游必须
    Collectors.groupingBy
    提供一个收集器。
  8. 对于此下游,我使用一个收集器,该收集器通过引用将我的
    Map.Entry
    条目映射到它们的
    String
    Map.Entry::getValue
  9. 我还需要指定如何收集它们,这只是
    Collectors.toList()
    这里,因为我想将它们添加到列表中。
  10. 这就是我们得到的
    Map<Integer, List,String>>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/496337.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号