文章目录
在这个页面上,我们将提供 Java8
转换 Map
到 List
的方法 Collectors.toList()
示例。
一个映射有键和值,我们可以将所有键和值作为列表来获取。
如果我们想在一个类属性中设置key
和value
,然后把这个对象添加到List
中,我们可以用java8
的一行代码来实现Collectors.toList()
.
现在让我们看看怎么做。
1.使用Lambda
表达式将Map
转化成List
在Collectors.toList()
方法中使用lambda
表达式将Map
转换为List
,如下示例
List<String> valueList = map.values().stream().collect(Collectors.toList());
如果我们想在放入List
之前对值进行排序,我们将按如下方式进行。
List<String> sortedValueList = map.values().stream()
.sorted().collect(Collectors.toList());
我们还可以使用给定的比较器(Comparator.comparing()
)将Map
转换为用户对象List
List<Person> list = map.entrySet().stream().sorted(Comparator.comparing(e -> e.getKey()))
.map(e -> new Person(e.getKey(), e.getValue())).collect(Collectors.toList());
这里的Person
是一个用户类。我们也可以使用Map.Entry
获取Map
的键和值如下。
List<Person> list = map.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getValue))
.map(e -> new Person(e.getKey(), e.getValue())).collect(Collectors.toList());
作为比较,我们也可以使用Map.Entry.comparingByValue()
和Map.Entry.comparingByKey()
分别根据值和键对数据进行排序。
List<Person> list = map.entrySet().stream().sorted(Map.Entry.comparingByKey())
.map(e -> new Person(e.getKey(), e.getValue())).collect(Collectors.toList());
2.简单Map
转化成List
示例
SimpleMapToList.java
package com.concretepage;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class SimpleMapToList {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(23, "Mahesh");
map.put(10, "Suresh");
map.put(26, "Dinesh");
map.put(11, "Kamlesh");
System.out.println("--Convert Map Values to List--");
List<String> valueList = map.values().stream().collect(Collectors.toList());
valueList.forEach(n -> System.out.println(n));
System.out.println("--Convert Map Values to List using sort--");
List<String> sortedValueList = map.values().stream()
.sorted().collect(Collectors.toList());
sortedValueList.forEach(n -> System.out.println(n));
System.out.println("--Convert Map keys to List--");
List<Integer> keyList = map.keySet().stream().collect(Collectors.toList());
keyList.forEach(n -> System.out.println(n));
System.out.println("--Convert Map keys to List using sort--");
List<Integer> sortedKeyList = map.keySet().stream()
.sorted().collect(Collectors.toList());
sortedKeyList.forEach(n -> System.out.println(n));
}
}
输出
--Convert Map Values to List--
Mahesh
Suresh
Dinesh
Kamlesh
--Convert Map Values to List using sort--
Dinesh
Kamlesh
Mahesh
Suresh
--Convert Map keys to List--
23
10
26
11
--Convert Map keys to List using sort--
10
11
23
26
3.用户对象Map
转化成List
示例
MapToListOfUserObject.java
package com.concretepage;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class MapToListOfUserObject {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(23, "Mahesh");
map.put(10, "Suresh");
map.put(26, "Dinesh");
map.put(11, "Kamlesh");
List<Person> list = map.entrySet().stream().sorted(Comparator.comparing(e -> e.getKey()))
.map(e -> new Person(e.getKey(), e.getValue())).collect(Collectors.toList());
list.forEach(l -> System.out.println("Id: "+ l.getId()+", Name: "+ l.getName()));
}
}
Person.java
package com.concretepage;
public class Person {
private Integer id;
private String name;
public Person(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
}
输出
Id: 10, Name: Suresh
Id: 11, Name: Kamlesh
Id: 23, Name: Mahesh
Id: 26, Name: Dinesh
如果我们需要按键来排序的话,我们可以使用键来排序
Comparator.comparing(e -> e.getValue())
然后输出如下。
Id: 26, Name: Dinesh
Id: 11, Name: Kamlesh
Id: 23, Name: Mahesh
Id: 10, Name: Suresh
参考文献
【1】Java 8 Convert Map to List using Collectors.toList() Example