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. ASP.NET中Dataset的table数据合并、数据截取、数据排序

    1.两个相同字段表的合并: public static DataSet CombineTables(DataSet _ds, DataTable _dt1, DataTable _dt2) { Dat ...

  2. APICloud开发者进阶之路 | txLive模块(直播类)试用分享

    本文出自APICloud官方论坛,感谢论坛版主uoaccw的分享 txLive 模块封装了腾讯云直播服务 https://docs.apicloud.com/Client-API/Open-SDK/t ...

  3. sudo: java 找不到命令

    解决方法: :~$ sudo visudo 在secure_path后加上JDK工具的路径,如: :/jdk安装路径/jdk1..0_144/bin 之后就可以使用"sudo java *. ...

  4. yii的数据库相关操作

    获取某一列数据 self::find()->where(['pid'=>$this->id])->select('id')->column(); 更新操作 $model- ...

  5. Jenkins+Jmeter持续集成笔记(五:问题优化)

    通过前面的一系列文章,我的API自动化测试平台已经搭建成型,但是要投入具体项目使用时,还有以下几个问题需要优化. 还是接着以上一篇笔记中的“test_token”项目为例: 1.邮件通知问题 (1)问 ...

  6. DCDC参数测量及方法

    此文章目的为补充知识,防止遗忘,记录DCDC相关的. 1.拿到一颗DCDC芯片应该测试哪些参数:纹波.电源效率和动态响应. 1)纹波测量方法:示波器偶合方式选择AC:示波器探头的接地也不能用鳄鱼夹,这 ...

  7. Android使用https与服务器交互的正确姿势

    HTTPS 使用 SSL 在客户端和服务器之间进行加密通信,错误地使用 SSL ,将会导致其它人能够拦截网络上的应用数据. 使用一个包含公钥及与其匹配的私钥的证书配置服务器,作为 SSL 客户端与服务 ...

  8. keras笔记

    函数式模型 函数式模型算是本文档比较原创的词汇了,所以这里要说一下 在Keras 0.x中,模型其实有两种,一种叫Sequential,称为序贯模型,也就是单输入单输出,一条路通到底,层与层之间只有相 ...

  9. 运维面试题之k8s

    前言: 到了如今年k8s已经是事实上的容器集群标准了,是时候展现我真正的祖传k8s实力了 吐槽: 我干嘛要知道这些,能用不就行了k8s真香 Kubernetes有哪些特性? Kubernetes是自动 ...

  10. std::function 的使用说明

    转自: https://www.cnblogs.com/heartchord/p/5017071.html //////////////////// std::function   参考资料 • cp ...