繁体   English   中英

使用流将对象列表转换为地图

Convert a List of objects to a Map using Streams

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个A类的对象列表:

List<A> list;
class A {
    String name;
    String lastname;
    //Getter and Setter methods
}

我想将此列表转换为从名称到一组姓氏的映射:

Map<String, Set<String>> map;

例如,对于以下列表:

约翰·阿彻,约翰·玛瑙,汤姆·基南宁,汤姆·巴伦,辛迪·金

地图将是:

约翰-> {Archer,Agate},汤姆-> {Keinanen,Barren},辛迪-> {King}

我尝试了以下代码,但它返回了从名称到A类对象的映射:

list.stream.collect(groupingBy(A::getFirstName, toSet()));
2 个回复
Map< String, Set<String>> map = list.stream()
                                    .collect(
                                        Collectors.groupingBy(
                                              A::getFirstName, Collectors.mapping(
                                                    A::getLastName, Collectors.toSet())));

您在正确的轨道上需要使用:

  • Collectors.groupingByfirstName分组。

  • 然后使用一个下游收集器等Collectors.mappping作为第二参数Collectors.groupingBy映射到lastName

  • 然后最后通过调用Collectors.toSet Set<String>收集在Set<String>

您从未告诉收集者提取姓氏。

我想你需要这样的东西

list.stream
  .collect(groupingBy(
    A::getFirstName, // The key is extracted.
    mapping(  // Map the stream of grouped values.
      A::getLastName, // Extract last names.
      toSet()  // Collect them into a set.
)));
7 将对象列表转换为地图 - dart

我有以下对象的列表 这意味着列表是list = [GenesListObj, GenesListObj ,GenesListObj...] 。 我希望能够将此列表转换为对象属性之间的映射。 地图看起来像{geneListName: [genesList as a list and not a ...

8 将对象列表转换为地图 > java8流

你好,我有一个对象列表,我的对象有三个字段 我需要将此列表转换为Map&lt;String,Map&lt;String,Integer&gt;&gt; 就像这样: {x1:{y1:z1,y2:z2,y3:z3},x2{y4:z4,y5:z5}}格式我想在Java 8中这样做,我认为 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM