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

Java 8流从列表中的映射读取值

巢安澜
2023-03-14

我不想使用foreach和loop。我想使用Java8中的流在列表中的映射中查找值

List<Map<String, Boolean>> types = ...

map.stream().filter(...

问题是,在过滤器我不能搜索键/值对。

我想得到布尔=true的所有元素

我做错了什么吗?

共有2个答案

汪学真
2023-03-14
    List<Map<String, Boolean>> types = new ArrayList<>();

    Map<String, Boolean> myMap = new HashMap<>();
    Map<String, Boolean> myMap2 = new HashMap<>();

    myMap2.put("Meric", true);
    myMap2.put("BERBER", false);
    types.add(myMap2);

    myMap.put("TEST1", true);
    myMap.put("TEST2", false);
    types.add(myMap);


    types.stream()
            .flatMap(map -> map.entrySet().stream())
            .filter(Map.Entry::getValue)
            .map(Map.Entry::getKey)
            .forEach(System.out::println);

产量将是

 Meric
 TEST1
隗和裕
2023-03-14

流过条目集:

types.stream()                               // stream of maps
    .flatMap(map -> map.entrySet().stream()) // flat map to stream of map entries
    .filter(Map.Entry::getValue)             // filter for value == true
    .map(Map.Entry::getKey)                  // get the key
    .collect(Collectors.toList());           // collect

您可以删除. map(Map.条目::getKey),如果您希望最终得到一个键/值对列表。

 类似资料:
  • 我在迭代一个对象内的列表时遇到了一个问题,该对象内嵌在另一个映射中。我的目标是迭代这个列表并生成一个映射 ,我希望使用streams和lamdas来实现这一点。 我在上面看到了,我需要通过迭代FolderBo中的elementList从elementBo创建一个带有map 的映射。folderBo本身就在Modelbo的地图内。

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

  • 我有map,我想有一个列表,它按键的对应值排序(最小到最大)。我的尝试是:

  • 问题内容: 我有一个带有以下签名的类: 我想要一个来自a 的键,该键将是该类的名称。我如何使用java8流按es名称对列表进行分组?所有es在名称上都是唯一的。 可以在单个流中求解,还是应该以某种方式拆分它还是采用经典解决方案? 问题答案:

  • 我有一个实体,看起来像这样: 输入数据是一个