【Java 8 新特性】使用Collectors.toList()方法将Map转化成List的示例
文章目录
- 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());
我们还可以使用给定的比较器(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
【Java 8 新特性】使用Collectors.toList()方法将Map转化成List的示例相关推荐
- 【Stream流学习】Java 8 新特性|Collectors.joining() 案例详解
[辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...
- Java 8 新特性|Collectors.joining() 详解
方法定义 Java 8 流 ( stream ) 收集器 ( Collectors ) 中的 joining() 方法会返回一个 Collectors 实例,方便在流收集器上的链式操作. Collec ...
- Java 8 新特性|Collectors.joining()
话不多说,上代码 首先创建一个集合 ArrayList<String> list = new ArrayList<String>() {{this.add("a&qu ...
- 【Java 8 新特性】Java Stream 通过skip()方法跳过前N个子元素
[Java 8 新特性]Java Stream 通过skip方法跳过前N个子元素 1.skip() 示例 2.skip() vs limit() 参考文献 本页将介绍 Stream.skip方法示例. ...
- Java 8新特性探究(二)深入解析默认方法
转载自 Java 8新特性探究(二)深入解析默认方法 什么是默认方法,为什么要有默认方法 简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法.只需在方法名前面加个default关键字即可. ...
- Java 8新特性——default方法(defender方法)介绍
转载自 Java 8新特性--default方法(defender方法)介绍 我们都知道在Java语言的接口中只能定义方法名,而不能包含方法的具体实现代码.接口中定义的方法必须在接口的非抽象子类中实现 ...
- Java 8 新特性之默认方法
1. 简介 默认方法就是接口可以有实现方法, 而且不需要实现类去实现其方法, 默认方法的实现只需要在方法名的前面加一个default关键字即可实现默认方法. 2. 默认方法语法 public in ...
- stream distinct去重_再来看看Java的新特性——Stream流
半年前开始试着使用Java的新特性,给我印象最深的就是Stream流和Optional.其中Stream提高了看法效率,让代码看起来十分清爽. 为什么要使用流? 摘要中已经说明了,为了提高开发效率.流 ...
- 跟我学 Java 8 新特性之 Stream 流(六)收集
转载自 跟我学 Java 8 新特性之 Stream 流(六)收集 我们前面的五篇文章基本都是在说将一个集合转成一个流,然后对流进行操作,其实这种操作是最多的,但有时候我们也是需要从流中收集起一些 ...
- Java 8 新特性之Stream API
1. 概述 1.1 简介 Java 8 中有两大最为重要的改革,第一个是 Lambda 表达式,另外一个则是 Stream API(java.util.stream.*). Stream 是 Java ...
最新文章
- strtok和strtok_r
- Ubuntu 14.04 opencv 2.4.9 安装
- 你真的会写二分查找吗?
- IOS问题汇总:2015-1-14 xib连线问题
- mybatis映射器${}和#{}的区别
- 《windows程序设计》第二章学习心得
- oracle表是动态表怎么算排名,Oracle学习动态性能表
- OpenJudge NOI 1.7 32:行程长度编码
- 华为p7刷android go,华为首款Android GO手机发布 1G内存也流畅
- 从Linux基础到k8s进阶,马哥_K8s进阶实战(11)Kubernetes系统扩展
- [转]训练集和测试集的含义和区别?
- 《深入浅出struts》读书笔记(3)
- 系统集成项目-管理工程师教程·一
- c++使用完成端口实现服务器的高性能并发
- 360浏览器显示没有网络连接到服务器地址,Win10 360浏览器提示网络连接错误错误代码102如何解决...
- 信工所复试收集材料分享
- Python Re正则表达式之group(0)、group(1)
- 第三阶段应用层——1.7 数码相册—电子书(5)—多线程支持多输入
- 无刷马达绕线机相对于人工的优势
- 派大汤的数据结构错题本