Java 8 使用Java8流过滤映射值
我有一个映射,如下所示,希望使用键检索内部映射的值Java 8 使用Java8流过滤映射值,java-8,Java 8,我有一个映射,如下所示,希望使用键检索内部映射的值 <bean id="testMap" class="java.util.HashMap"> <constructor-arg> <map> <entry key="A" value="AA" /> <entry key="B"> <map> <entry key="B1"
<bean id="testMap" class="java.util.HashMap">
<constructor-arg>
<map>
<entry key="A" value="AA" />
<entry key="B">
<map>
<entry key="B1" value="B11" />
<entry key="B2" value="B22" />
<entry key="B3" value="B33" />
</map>
</entry>
</map>
</constructor-arg>
</bean>
你能试试这个吗?myMap
.entrySet().stream()
.filter(map->map.getKey().equals(“B”))
.values().forEach(value->System.out.println(value))代码>你能试试这个吗?
myMap
.entrySet().stream()
.filter(map->map.getKey().equals(“B”))
.values().forEach(value->System.out.println(value))代码>答案没有大多数使用嵌套地图的人想要的那么简单,因为你有一个地图
重新创建您描述的地图:
Map<String,Object> map = new HashMap<>();
Map<String,String> bMap = new HashMap<>();
bMap.put("B1", "B11");
bMap.put("B2", "B22");
bMap.put("B3", "B33");
map.put("A", "AA");
map.put("B", bMap);
评论中提供了一个更短更快的解决方案:
((Map<String,String>)map.get("B")).values().stream()
.forEach(System.out::println);
((Map)Map.get(“B”).values().stream()
.forEach(System.out::println);
在上述解决方案中,它只对地图条目进行一次查找,而不是线性搜索,即速度更快。答案没有大多数人使用嵌套地图所寻找的简单,因为你有一个地图
重新创建您描述的地图:
Map<String,Object> map = new HashMap<>();
Map<String,String> bMap = new HashMap<>();
bMap.put("B1", "B11");
bMap.put("B2", "B22");
bMap.put("B3", "B33");
map.put("A", "AA");
map.put("B", bMap);
评论中提供了一个更短更快的解决方案:
((Map<String,String>)map.get("B")).values().stream()
.forEach(System.out::println);
((Map)Map.get(“B”).values().stream()
.forEach(System.out::println);
在上述解决方案中,它只对地图条目进行一次查找,而不是线性搜索,即速度更快。在过滤器之后
@RobinTopper能否请您提供带有.flatMap()的示例代码在过滤器之后
@RobinTopper能否请您提供带有.flatMap()的示例代码没有值()
这是一个问题还是一个答案?没有values()
方法这是问题还是答案?关于((Map)Map.get(“B”)).values().stream().forEach(System.out::println)如何代码>?…并执行单个查找而不是线性搜索。您可以将其添加到您的答案中。((Map)Map.get(“B”)).values().stream().forEach(System.out::println)如何代码>?…并执行单个查找而不是线性搜索。您可以将其添加到答案中。
((Map<String,String>)map.get("B")).values().stream()
.forEach(System.out::println);