当前位置: 首页 > 知识库问答 >
问题:

如何使用流从对象列表中获取映射?[副本]

严恩
2023-03-14
class Country {
private String code;
private String name;
}
Map<String, String> countryNames = countries.stream()
            .collect(Collectors.groupingBy(Country::getCode, Country::getName));

共有1个答案

毕泽宇
2023-03-14

我假设您希望code作为键,并希望name作为value。在这种情况下,您需要使用collectors.mapping作为collectors.groupingby的下游收集器。像这样:

Map<String, List<String>> countryNames = countries.stream()
        .collect(Collectors.groupingBy(Country::getCode, 
            Collectors.mapping(Country::getName, Collectors.toList())));

请注意,如果有多个国家使用相同的代码,这将以字符串列表的形式返回值,因为名称是在列表中分组的(通过collectors.toList())。

如果知道每个代码在列表中只出现一次,则可以改用collectors.tomap

Map<String, String> countryNames = countries.stream()
        .collect(Collectors.toMap(Country::getCode, Country::getName));
 类似资料:
  • 我有一个映射“m”和一个列表“l”,现在我想从那个映射“m”中获取值,使用“l”中可用的键列表。我想用Java 8流的概念,任何人都可以在这方面提供帮助。 我编码打印这些值,但我需要的是将值放入列表中 list.stream().foreach(s->{system.out.println(map.get(s));});

  • 我无法解决这个问题。 我想用Java流来解决这个问题: 有什么解决办法吗?谢谢!

  • 我有以下数据结构: <代码>地图 我想从这个复杂的 Map 对象中提取它的值(它本身是另一个字符串 Map)。我目前正在这样做: 上面的实现给了我一个新的Map对象,由于外部循环,它正在迭代。似乎我错过了什么。 如何从复杂的 Map 对象中提取内部 Map 对象? 编辑: 回应AlexWien的评论 原始数据结构: 原始数据结构背后的原因是为一对id(ID1和ID2)存储一个值。ID1和ID2可以

  • 假设我有这样的映射: 现在,我需要将子列表映射到子列表,但它们都有相同的父对象。我希望这样做: 但不管用,有机会做吗?

  • 注意: 我不需要创建java对象,因为我只需要检查一些值,但我没有找到任何东西来取消将它们作为通用对象或树或任何东西。像杰克逊的 JsonNode。如果可能的话,让我知道,这样我就可以避免所有这些混乱的对象来映射一切。 现在的问题是: 我不得不解组一个简单的xml,但是结果总是空的。我已经尝试了不同的注释,但是如果它们没有失败,结果就是null。 这似乎是这个问题的相同情况,但使用相同的注释是行不