文章目录

  • 1.使用`Lambda`表达式将`Map`转化成`List`
  • 2.简单`Map`转化成`List`示例
  • 3.用户对象`Map`转化成`List`示例
  • 参考文献

在这个页面上,我们将提供 Java8转换 MapList的方法 Collectors.toList()示例。

一个映射有键和值,我们可以将所有键和值作为列表来获取。

如果我们想在一个类属性中设置keyvalue,然后把这个对象添加到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的示例相关推荐

  1. 【Stream流学习】Java 8 新特性|Collectors.joining() 案例详解

    [辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...

  2. Java 8 新特性|Collectors.joining() 详解

    方法定义 Java 8 流 ( stream ) 收集器 ( Collectors ) 中的 joining() 方法会返回一个 Collectors 实例,方便在流收集器上的链式操作. Collec ...

  3. Java 8 新特性|Collectors.joining()

    话不多说,上代码 首先创建一个集合 ArrayList<String> list = new ArrayList<String>() {{this.add("a&qu ...

  4. 【Java 8 新特性】Java Stream 通过skip()方法跳过前N个子元素

    [Java 8 新特性]Java Stream 通过skip方法跳过前N个子元素 1.skip() 示例 2.skip() vs limit() 参考文献 本页将介绍 Stream.skip方法示例. ...

  5. Java 8新特性探究(二)深入解析默认方法

    转载自 Java 8新特性探究(二)深入解析默认方法 什么是默认方法,为什么要有默认方法 简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法.只需在方法名前面加个default关键字即可. ...

  6. Java 8新特性——default方法(defender方法)介绍

    转载自 Java 8新特性--default方法(defender方法)介绍 我们都知道在Java语言的接口中只能定义方法名,而不能包含方法的具体实现代码.接口中定义的方法必须在接口的非抽象子类中实现 ...

  7. Java 8 新特性之默认方法

    1. 简介   默认方法就是接口可以有实现方法, 而且不需要实现类去实现其方法, 默认方法的实现只需要在方法名的前面加一个default关键字即可实现默认方法. 2. 默认方法语法 public in ...

  8. stream distinct去重_再来看看Java的新特性——Stream流

    半年前开始试着使用Java的新特性,给我印象最深的就是Stream流和Optional.其中Stream提高了看法效率,让代码看起来十分清爽. 为什么要使用流? 摘要中已经说明了,为了提高开发效率.流 ...

  9. 跟我学 Java 8 新特性之 Stream 流(六)收集

    转载自   跟我学 Java 8 新特性之 Stream 流(六)收集 我们前面的五篇文章基本都是在说将一个集合转成一个流,然后对流进行操作,其实这种操作是最多的,但有时候我们也是需要从流中收集起一些 ...

  10. Java 8 新特性之Stream API

    1. 概述 1.1 简介 Java 8 中有两大最为重要的改革,第一个是 Lambda 表达式,另外一个则是 Stream API(java.util.stream.*). Stream 是 Java ...

最新文章

  1. strtok和strtok_r
  2. Ubuntu 14.04 opencv 2.4.9 安装
  3. 你真的会写二分查找吗?
  4. IOS问题汇总:2015-1-14 xib连线问题
  5. mybatis映射器${}和#{}的区别
  6. 《windows程序设计》第二章学习心得
  7. oracle表是动态表怎么算排名,Oracle学习动态性能表
  8. OpenJudge NOI 1.7 32:行程长度编码
  9. 华为p7刷android go,华为首款Android GO手机发布 1G内存也流畅
  10. 从Linux基础到k8s进阶,马哥_K8s进阶实战(11)Kubernetes系统扩展
  11. [转]训练集和测试集的含义和区别?
  12. 《深入浅出struts》读书笔记(3)
  13. 系统集成项目-管理工程师教程·一
  14. c++使用完成端口实现服务器的高性能并发
  15. 360浏览器显示没有网络连接到服务器地址,Win10 360浏览器提示网络连接错误错误代码102如何解决...
  16. 信工所复试收集材料分享
  17. Python Re正则表达式之group(0)、group(1)
  18. 第三阶段应用层——1.7 数码相册—电子书(5)—多线程支持多输入
  19. 无刷马达绕线机相对于人工的优势
  20. 派大汤的数据结构错题本

热门文章

  1. 糊涂图决定开始写博客了
  2. 树莓派通过蓝牙进行串口通讯
  3. Linux XFS 文件系统文件的删除恢复
  4. 公共DNS递归服务器(转发)
  5. 使用微信公众号实现扫码开门
  6. 微擎模块-微信门禁小区物业版(微信开门)
  7. 魔兽服务器人口查询网站是多少,网易魔兽世界人口普查
  8. python jinja2_Python模块学习 - jinja2
  9. word替换向下箭头符号
  10. java 中英文长度_Java--计算中英文长度的若干种方法