文章目录
1.使用`Lambda`表达式将`Map`转化成`List`2.简单`Map`转化成`List`示例3.用户对象`Map`转化成`List`示例参考文献在这个页面上,我们将提供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());
我们还可以使用给定的比较器(paring()
)将Map
转换为用户对象List
List<Person> list = map.entrySet().stream().sorted(paring(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(paring(Map.Entry::getValue)).map(e -> new Person(e.getKey(), e.getValue())).collect(Collectors.toList());
作为比较,我们也可以使用paringByValue()
和paringByKey()
分别根据值和键对数据进行排序。
List<Person> list = map.entrySet().stream().sorted(paringByKey()).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--MaheshSureshDineshKamlesh--Convert Map Values to List using sort--DineshKamleshMaheshSuresh--Convert Map keys to List--23102611--Convert Map keys to List using sort--10112326
3.用户对象Map
转化成List
示例
MapToListOfUserObject.java
package com.concretepage;import parator;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(paring(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: SureshId: 11, Name: KamleshId: 23, Name: MaheshId: 26, Name: Dinesh
如果我们需要按键来排序的话,我们可以使用键来排序
paring(e -> e.getValue())
然后输出如下。
Id: 26, Name: DineshId: 11, Name: KamleshId: 23, Name: MaheshId: 10, Name: Suresh
参考文献
【1】Java 8 Convert Map to List using Collectors.toList() Example