我不想使用foreach和loop。我想使用Java8中的流在列表中的映射中查找值
List<Map<String, Boolean>> types = ...
map.stream().filter(...
问题是,在过滤器我不能搜索键/值对。
我想得到布尔=true的所有元素
我做错了什么吗?
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
流过条目集:
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在名称上都是唯一的。 可以在单个流中求解,还是应该以某种方式拆分它还是采用经典解决方案? 问题答案:
我有一个实体,看起来像这样: 输入数据是一个