java8 list转换对象_Java8将List对象转换Map「建议收藏」

java8 list转换对象_Java8将List对象转换Map「建议收藏」基于Java8的函数式编程概念,去实现List转换MappublicclassDemoMian2{publicstaticvoidmain(String[]args){ListusersList=newArrayList();Usersusers=newUsers();users.setId(1L);users.setName(“张三”);users.setSex(…

大家好,又见面了,我是你们的朋友全栈君。

基于Java8的函数式编程概念,去实现List转换Map

public class DemoMian2 {

public static void main(String[] args) {

List usersList = new ArrayList();

Users users = new Users();

users.setId(1L);

users.setName(“张三”);

users.setSex(“男”);

users.setCity(“深圳”);

usersList.add(users);

Users users2 = new Users();

users2.setId(2L);

users2.setName(“张三”);

users2.setSex(“男”);

users2.setCity(“上海”);

usersList.add(users2);

Users users3 = new Users();

users3.setId(3L);

users3.setName(“张三”);

users3.setSex(“男”);

users3.setCity(“深圳”);

usersList.add(users3);

Users users4 = new Users();

users4.setId(4L);

users4.setName(“张三”);

users4.setSex(“男”);

users4.setCity(“上海”);

usersList.add(users4);

Map collect = usersList.stream().collect(Collectors.toMap(Users::getId, Users -> Users));

collect.forEach((key, value) -> System.out.println(key + “-” + value));

}

}

/*

1-Users{id=1, name=’张三’, sex=’男’, city=’深圳’}

2-Users{id=2, name=’张三’, sex=’男’, city=’上海’}

3-Users{id=3, name=’张三’, sex=’男’, city=’深圳’}

4-Users{id=4, name=’张三’, sex=’男’, city=’上海’}

*/

注意:需要转换的key不能重复,如果出现重复的话,会报错已存在key

Exception in thread “main” java.lang.IllegalStateException: Duplicate key

Users{id=3, name=’张三’, sex=’男’, city=’深圳’}

处理重复key可以使用如下模式:

package com.mars;

import java.util.*;

import java.util.function.Function;

import java.util.stream.Collectors;

/**

* TODO

*

* @Author: Yizq

* @Date: 2020/10/27 1:49 下午

*/

public class DemoMian2 {

public static void main(String[] args) {

List usersList = new ArrayList();

Users users = new Users();

users.setId(1L);

users.setName(“张三”);

users.setSex(“男”);

users.setCity(“深圳”);

usersList.add(users);

Users users2 = new Users();

users2.setId(2L);

users2.setName(“张三”);

users2.setSex(“男”);

users2.setCity(“上海”);

usersList.add(users2);

Users users3 = new Users();

users3.setId(3L);

users3.setName(“张三”);

users3.setSex(“男1”);

users3.setCity(“深圳”);

usersList.add(users3);

Users users4 = new Users();

users4.setId(3L);

users4.setName(“张三”);

users4.setSex(“男2”);

users4.setCity(“上海”);

usersList.add(users4);

Map collect = usersList.stream().collect(Collectors.toMap(Users::getId, Function.identity(), (key1, key2) -> key2));

collect.forEach((key, value) -> System.out.println(key + “-” + value));

}

}

/*

1-Users{id=1, name=’张三’, sex=’男’, city=’深圳’}

2-Users{id=2, name=’张三’, sex=’男’, city=’上海’}

3-Users{id=3, name=’张三’, sex=’男2′, city=’上海’}

*/

使用这种方式,在处理过程中会将存在的key进行覆盖

标签:Map,Users,usersList,张三,List,users4,users2,users3,Java8

来源: https://www.cnblogs.com/xianbeier/p/14068382.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145620.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PyCharm:设置是否在SciView中绘图

    PyCharm:设置是否在SciView中绘图有时候用PyCharm写代码,特别是用到matplotlib等库进行绘图时,图像常常会绘制在右侧的SciView窗口中,这样往往会遮挡住图像,特别是你的屏幕如果比较小的话,遮挡就比较麻烦了~~~特别是以下几种情况:①你用两个屏幕debug代码时,一个用来写代码,一个用来绘图,大屏,爽啊!②希望知道每一句代码都在图上做了什么改动,以及动态查看图是如何被绘制出来的。③图像较大而屏幕较小……

    2022年8月28日
  • 2021计算机三级数据库大题总结

    2021计算机三级数据库大题总结第一套大题为了方便之后的大题都放在这里38.设计ER图,并把ER图转换为关系模式,并指出主码。相关参考资料:(一)什么是ER图?(1)概念ER图:实体关系图,简记E-R图,是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式(2)要素3要素:实体、属性和关系(3)表示 实体型:用矩形表示,矩形框内写明实体名;  属性:用椭圆形或圆角矩形表示,与相应的实体连接起来;多值属性由双线连接;主属性名称下加下划线;  联系:用菱形表示,菱形框内写明

    2022年6月22日
  • Hive简介

    Hive简介

    2021年11月27日
  • weakHashMap用法

    weakHashMap用法WeakHashMap,此种Map的特点是:当除了自身有对key的引用外,此key没有其他引用那么此map会自动丢弃此值,举例来说:声明了两个Map对象,一个是HashMap,一个是WeakHashMap,同时向两个map中放入a、b两个对象,当HashMap remove掉a并且将a、b都指向null时,WeakHashMap中的a将自动被回收掉。出现这个状况的原因是

    2022年5月31日
  • 一.linux开发之uboot移植(一)——初识uboot

    一.linux开发之uboot移植(一)——初识uboot参考博文:http://blog.51cto.com/9291927/1791237一、uboot简介U-Boot,全称UniversalBootLoader,是遵循GPL条款的从FADSROM、8xxROM、PPCBOOT逐步发展演化而来的开放源码项目。-在操作系统方面,U-Boot不仅支持-嵌入式Linux系统的引导,它还支持NetBSD,VxWorks,

    2022年6月26日
  • 利用STM32F103精确控制步进电机「建议收藏」

    利用STM32F103精确控制步进电机「建议收藏」**利用STM32F103控制步进电机精确角度转动**欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,…

    2022年6月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号