1、实体

 public class Hosting {

     private int id;

     private String name;

     private long websites;

     public Hosting(int id, String name, long websites) {
this.id = id;
this.name = name;
this.websites = websites;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public long getWebsites() {
return websites;
} public void setWebsites(long websites) {
this.websites = websites;
} @Override
public String toString() {
return "Hosting{" +
"id=" + id +
", name='" + name + '\'' +
", websites=" + websites +
'}';
}
}

2、将List转为Map

 public class List2Map {

     public static void main(String[] args) {
List<Hosting> hostings = new ArrayList<>();
hostings.add(new Hosting(1, "liquidweb.com", 80000));
hostings.add(new Hosting(2, "linode.com", 90000));
hostings.add(new Hosting(3, "digitalocean.com", 120000));
hostings.add(new Hosting(4, "aws.amazon.com", 200000));
hostings.add(new Hosting(5, "mkyong.com", 1)); // key = id, value = websites
Map<Integer, String> id2Name = hostings.stream()
.collect(Collectors.toMap(Hosting::getId, Hosting::getName));
System.out.println("id2Name: " + id2Name); // key = name, value = websites
Map<String, Long> name2Websites = hostings.stream()
.collect(Collectors.toMap(Hosting::getName, Hosting::getWebsites));
System.out.println("name2Websites: " + name2Websites); // key = id, value = websites
Map<Integer, String> id2NamDifferent = hostings.stream()
.collect(Collectors.toMap(h -> h.getId(), h -> h.getName()));
System.out.println("id2NamDifferent: " + id2NamDifferent); }
}

3、将List转为Map(重复key的情况)

public class List2MapDuplicatedKey {

    public static void main(String[] args) {
List<Hosting> hostings = new ArrayList<>();
hostings.add(new Hosting(1, "liquidweb.com", 80000));
hostings.add(new Hosting(2, "linode.com", 90000));
hostings.add(new Hosting(3, "digitalocean.com", 120000));
hostings.add(new Hosting(4, "aws.amazon.com", 200000));
hostings.add(new Hosting(5, "mkyong.com", 1)); hostings.add(new Hosting(6, "linode.com", 100000)); // 重复的key // key = name, vaule = websites
Map<String, Long> name2Websites = hostings.stream()
.collect(Collectors.toMap(Hosting::getName, Hosting::getWebsites));
System.out.println("name2Websites: " + name2Websites); }
}

在上面一段代码中,"linbode.com"做为key被add两次,那么在转为map过程会发生什么?如下:

如何解决重复key的情况?只需要在16行加入如下处理即可:

 public class List2MapDuplicatedKey {

     public static void main(String[] args) {
List<Hosting> hostings = new ArrayList<>();
hostings.add(new Hosting(1, "liquidweb.com", 80000));
hostings.add(new Hosting(2, "linode.com", 90000));
hostings.add(new Hosting(3, "digitalocean.com", 120000));
hostings.add(new Hosting(4, "aws.amazon.com", 200000));
hostings.add(new Hosting(5, "mkyong.com", 1)); hostings.add(new Hosting(6, "linode.com", 100000)); // 重复的key // key = name, vaule = websites
Map<String, Long> name2Websites = hostings.stream()
.collect(Collectors.toMap(Hosting::getName, Hosting::getWebsites,
(oldValue, newValue) -> newValue));
System.out.println("name2Websites: " + name2Websites); }
}

4、将List转为Map并排序

 public class List2MapWithSort {

     public static void main(String[] args) {
List<Hosting> hostings = new ArrayList<>();
hostings.add(new Hosting(1, "liquidweb.com", 80000));
hostings.add(new Hosting(2, "linode.com", 90000));
hostings.add(new Hosting(3, "digitalocean.com", 120000));
hostings.add(new Hosting(4, "aws.amazon.com", 200000));
hostings.add(new Hosting(5, "mkyong.com", 1));
hostings.add(new Hosting(6, "linode.com", 100000)); // key = name, vaule = websites
Map<String, Long> name2Websites = hostings.stream()
.sorted(Comparator.comparing(Hosting::getWebsites).reversed())
.collect(Collectors.toMap(Hosting::getName, Hosting::getWebsites,
(oldValue, newValue) -> newValue, // 如果有相同的key,使用新key
LinkedHashMap::new)); // 返回ListedHashMap,保持有序 System.out.println("name2Websites: " + name2Websites);
}
}

Java8将List转为Map的更多相关文章

  1. 用Java8把List转为Map

    1 import com.yang.test.User; 2 3 import javax.jws.soap.SOAPBinding; 4 import java.util.*; 5 import j ...

  2. Java 8中Collection转为Map的方法

    Java 8中java.util.stream.Collectors提供了几个方法可用于把Collection转为Map结构,本文记录了个人对其中三个的理解. Method Return Type g ...

  3. 【转】Java8中list转map方法总结

    https://blog.csdn.net/zlj1217/article/details/81611834 背景在最近的工作开发之中,慢慢习惯了很多Java8中的Stream的用法,很方便而且也可以 ...

  4. javabean实体类对象转为Map类型对象的方法(转发)

    //将javabean实体类转为map类型,然后返回一个map类型的值 public static Map<String, Object> beanToMap(Object obj) { ...

  5. java8--List转为Map、分组、过滤、求和等操作----代码示例

    Java 8 函数式编程风格 Java 迄今为止最令人激动的特征.这些新的语言特征允许采用函数式风格来进行编码,我们可以用这些特性完成许多有趣的功能.这些特性如此有趣以至于被认为是不合理的.他们说会影 ...

  6. json数据转为Map集合

    我是利用Gson来弄得Gson gson = new Gson();//显得出HashMap的类型Type type = new TypeToken<HashMap<String, Str ...

  7. JAVA中将对象转为Map类型

    之前讲过将Map转为JAVA对象的文章,那么问题来了,如果要把JAVA对象转为Map,又该怎么操作呢?这里亲测了2个方法可行,但目前这2个方法都是基于简单JAVA Bean的情况(即Bean中不能嵌套 ...

  8. java中list强转为map类型

    起因:读取数据库文件的测试用例,测试用例需要存放到一个map中,方便下次调用, 读取的内容返回的内容存放在一个list中,并且数据内容是key=value的形式,最开始使用切片方式,做了很多无用功,后 ...

  9. XML字符串转为Map集合

    public class xmlToMapUtils { /** * xml字符串转为map集合 * @param xmlStr * @return */ public static Map<S ...

随机推荐

  1. javascript的数组之includes()

    includes()方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回true,否则返回false. var array1 = [1, 2, 3]; console.log(array ...

  2. windows安装虚拟机(VMware)

    一.安装虚拟机 1.打开安装包 2.接受协议 3.选择安装位置 4.按照提示下一步即可 5.完成安装 二.安装带有GUI的Redhat7系统 1.选择自定义安装 2.默认虚拟机硬件兼容 3.选择稍后安 ...

  3. 网络流 ek

    hdu3549 求最大流果题 ek算法 先bfs出一条流 然后通过不断地添加增广路 得到最大流(证明在算法书上都有) 增加了一个流 就加反向边 允许程序通过走方向边的方式进行“回滚” i^1 = i+ ...

  4. day 24 二十四、组合、继承、方法重写和重用、super()

    一.组合 1.定义:自定义类的对象作为类的属性 A类的对象具备某一个属性,该属性的值是B类的对象 基于这种方式就把A类与B类组合到一起 对象既能使用A类中的数据与功能,也能使用B类中的数据与功能 2. ...

  5. CAJ转换成PDF在线方法是什么

    做学术性的朋友经常会需要将CAJ文件转换成PDF文件,毕竟CAJ文件只能在CAJ阅读器上显示,但是有很多转换软件并不能很好的完成转换,小编今天就为大家讲解一下CAJ转换成PDF在线方法是什么,大家要认 ...

  6. Java+Selenium向文本框输入内容以后模仿键盘的"ENTRY"

    在自动化测试中我们避免不了要模仿一些键盘上按钮的操作,普通的字母,数字,特殊符号,这些都是很简单的,有时候我们也会模仿"SHIFT","ALT","C ...

  7. 《Mysql 锁》

    一:什么是锁? - 锁是计算机协调多个进程或纯线程并发访问某一资源的机制. - 通俗的来说,锁是一种对资源的保护形式. 二:锁分类 - 表级锁 - 开销小,加锁快,没有死锁,锁定粒度大,发生锁冲突的概 ...

  8. PyQt5之使用Qt下的designer工具将.ui文件转换成.py文件后添加什么东西后方可运行

    首先证明我是加了那些鬼东西以后可以成功运行的. 然后来叙述一下我的过程. 这是一个.ui文件生成的.py文件.(把主要的内容省去了,但是没有影响结构) # -*- coding: utf-8 -*- ...

  9. Java中数组的几个常用算法:插入算法,删除算法,冒泡排序算法

    前言: 在Java中我们常常会用数组,提到数组就不得不介绍数组中常用到的几个算法. 有插入算法,删除算法,冒泡排序算法等. 在学习这几个数组的算法前,我们先来了解一下关于数组一些基本知识. 数组的基本 ...

  10. 安卓系统广播暴露设备信息-Android System Broadcasts Expose Device Information

    Android device details are being exposed to running applications via Wi-Fi broadcasts in the mobile ...