Java 使用现有列表中HashMap的值创建一个新列表
我想从现有列表中的地图创建一个新列表 我得到了如下结构的数组列表Java 使用现有列表中HashMap的值创建一个新列表,java,arraylist,linkedhashmap,Java,Arraylist,Linkedhashmap,我想从现有列表中的地图创建一个新列表 我得到了如下结构的数组列表 ArrayList 0 = {LinkedHashMap} 0 = {LinkedHashMapEntry} "name" --> "value" 1 = {LinkedHashMapEntry} "surname" --> "value" 1 = {LinkedHashMap}
ArrayList
0 = {LinkedHashMap}
0 = {LinkedHashMapEntry} "name" --> "value"
1 = {LinkedHashMapEntry} "surname" --> "value"
1 = {LinkedHashMap}
0 = {LinkedHashMapEntry} "name" --> "value"
1 = {LinkedHashMapEntry} "surname" --> "value"
....
我要做的是将所有名称值作为一个新列表获取
List<String> allNames = ....
列出所有名称=。。。。
使用Java Stream是否有办法获取此列表?是:
List<String> allNames =
list.stream() // this creates a Stream<LinkedHashMap<String,String>>
.map(m->m.get("name")) // this maps the original Stream to a Stream<String>
// where each Map of the original Stream in mapped to the
// value of the "name" key in that Map
.filter(Objects::nonNull) // this filters out any null values
.collect(Collectors.toList()); // this collects the elements
// of the Stream to a List
列出所有名称=
list.stream()//这将创建一个流
.map(m->m.get(“name”)//这将原始流映射到一个流
//其中,中原始流的每个映射映射到
//该映射中“name”键的值
.filter(Objects::nonNull)//这将过滤掉所有空值
.collect(Collectors.toList());//这将收集元素
//将流的名称添加到列表中
您能解释一下吗?我在我的IDE上尝试了类似的东西,但没有得到这个.map(m->m.get(“name”)东西。由于列表是地图,它不会以“m”的形式传递地图吗?@Bilbobagkins请参见编辑。是的,m
的类型是Map
(或者LinkedHashMap
,这取决于您声明输入的方式List
)附带说明:filter(Objects::nonNull)
不是必需的。@Eran谢谢:)@davidxxx在输出列表中避免null
对我来说很有意义。