使用 Java 8 从列表映射中根据其大小获取列表
Get the list based on its size from a Map of List using Java 8
我有一个Map<String, List<String>>
。我正在尝试从地图中检索大小 > 1 的所有 List<String>
并将它们收集到新列表中。
试图在 Java 8.
中找到解决方法
下面是我尝试实现代码的方式,但我得到了 List<String, List<String>>
map.entrySet().stream()
.filter(e->e.getValue().size()>1)
.collect(Collectors.toList())
在Java8.
中有什么方法可以实现
您正在流式传输 条目(key-value 对),而不是值本身,因此出现意外结果。如果您改为流式传输值(因为您似乎不关心键),您将获得所需的输出:
map.values().stream()
.filter(e->e.size()>1)
.collect(Collectors.toList())
编辑:这是假设期望的结果是List<List<String>>
,即大小大于1的所有列表的列表。
如果您想将所有这些值折叠成一个 List<String>
,您可以使用 flatMap
折叠它们:
map.values().stream()
.filter(e->e.size()>1)
.flatMap(List::stream)
.collect(Collectors.toList())
我有一个Map<String, List<String>>
。我正在尝试从地图中检索大小 > 1 的所有 List<String>
并将它们收集到新列表中。
试图在 Java 8.
中找到解决方法下面是我尝试实现代码的方式,但我得到了 List<String, List<String>>
map.entrySet().stream()
.filter(e->e.getValue().size()>1)
.collect(Collectors.toList())
在Java8.
中有什么方法可以实现您正在流式传输 条目(key-value 对),而不是值本身,因此出现意外结果。如果您改为流式传输值(因为您似乎不关心键),您将获得所需的输出:
map.values().stream()
.filter(e->e.size()>1)
.collect(Collectors.toList())
编辑:这是假设期望的结果是List<List<String>>
,即大小大于1的所有列表的列表。
如果您想将所有这些值折叠成一个 List<String>
,您可以使用 flatMap
折叠它们:
map.values().stream()
.filter(e->e.size()>1)
.flatMap(List::stream)
.collect(Collectors.toList())