List按需转换Map
需求 :
Mybatis的<select>返回一个List,想按照实体类其中的属性转换成Map<String, String>
实现过程:
其实有很多方式,可以使用普通for循环,循环取属性put进Map中,由于Jdk8以后,有了Stream流的方式,函数式出现,简化了代码,其实我也不太懂,我倒是有本Java8函数式编程,想要的留个言我发给你。这里我用的是Jdk8的函数式编程进行转化的,具体过程如下
// 返回权重Map [12A,20]
List<EvalMeasureWeight> measureWeightList = comprehensiveAnalysisMapper.measureWeight(systemId); Map<String, String> collect = measureWeightList.stream().collect(Collectors.toMap(EvalMeasureWeight::getMeasureId,
EvalMeasureWeight::getWeight));
坑点注意:
可能这个一百度一堆,但是我们要注意的是,每个人的需求不一样,所以写法只是参考,不能说达到一致性的复用,复制不是也得改东西,你说呢?
这里要提到。具体你想怎么用那是你的选择
import lombok.Data; import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; /**
* @program: cloud-eurka-server7001
* @description:
* @author: Wangly
* @create: 2021-04-21 09:03
*/
public class TestLambda
{ void practice()
{
List<Pserson> list = new ArrayList<>();
TestLambda.Pserson person1 = new Pserson();
TestLambda.Pserson person2 = new Pserson();
TestLambda.Pserson person3 = new Pserson();
person1.setAge(12);
person1.setName("Nipples");
person2.setAge(16);
person2.setName("feet");
person3.setAge(17);
person3.setName("handjob");
person3.setAge(17);
person3.setName("handjobs"); list.add(person1);
list.add(person2);
list.add(person3); //1. 这里是按照Person年龄 % 2 == 0 做过滤条件 防止出现重复
// /**
// * List -> Map
// * 注意:
// * toMap 如果集合对象有重复的key,会报Duplicate key 的错误
// * apple1,apple12的id都为1。
// * 可以用 (p1,p2)->p1 来设置,如果有重复的key,则保留key1,舍弃key2
// */
// 这里给的是一个过滤条件 这里进行转Map的操作
list.stream().filter(l ->l.getAge() % 2 == 0).collect(Collectors.toMap(Pserson::getAge, Pserson::getName,
(p1,p2) ->p2));
//2. 这里其实已经完成了,如果要按某种条件分组 相同条件的元素放在一起,就按下面操作
Map<Integer, List<Pserson>> collect = list.stream().collect(Collectors.groupingBy(Pserson::getAge));
//3.再续
}
@Data
class Pserson
{
private String name;
private int age; }
}
List按需转换Map的更多相关文章
- JAVA中List转换String,String转换List,Map转换String,String转换Map之间的转换类
<pre name="code" class="java"></pre><pre name="code" cl ...
- Guava实现 过滤文本,排序,转换内容,分组计数转换map 等等
重要点 :看注释 从access.log中统计数据 对healthcheck.html的请求不计入统计 输出请求总量,以及GET和POST分别的总量 输出请求最频繁的10个接口及其次数,按次数降序 输 ...
- 【Android】RxJava的使用(三)转换——map、flatMap
前两篇Android RxJava的使用(一)基本用法.Android RxJava的使用(二)Action介绍了RxJava的基本用法,对Rxjava还不了解的请先看以上两篇.这篇为大家讲解RxJa ...
- List转换Map的三种方式
1.for循环 ... 2.使用guava Map<Long, User> maps = Maps.uniqueIndex(userList, new Function<User, ...
- 进制转换 map
a_z = [i for i in map(chr, range(ord('a'), ord('z') + 1))]'''Address of var1 variable: 240ff24Addres ...
- java将数据从List转换Map
一.多对多 -> 一对多 二.代码实现 /** * 1个国家下所有城市,一对多关系 * 组装成Map结构返回 **/ public Map<String,List<JSONObjec ...
- poj 2752 Seek the Name, Seek the Fame(KMP需转换下思想)
Seek the Name, Seek the Fame Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10204 Ac ...
- Unity3D:Text在Inspector面板中中无法显示,需转换成UTF-8格式
环境:Win10 读取text内容后unity报错:Input string was not in the correct format 同时在Inspector面板中无法预览Text文本内容 随后发 ...
- java实现字符串和LIST,MAP转换
需要下载第三方的jar :net.sf.json import java.io.BufferedReader; import java.io.InputStream; import java.io.I ...
- Map和JSON的互相转换
JSON-Lib方式 /** * 函数注释:parseJSON2Map()<br> * 用途:该方法用于json数据转换为<Map<String, Object> ...
随机推荐
- 剖析 Kafka 消息丢失的原因
目录 前言 一.生产者导致消息丢失的场景 场景1:消息体太大 解决方案 : 1.减少生产者发送消息体体积 2.调整参数max.request.size 场景2:异步发送机制 解决方案 : 1.使用带回 ...
- FFmpeg frei0r插件使用学习
背景 ffmpeg做基本的音视频编辑还是比较简单的,但要做一些滤镜及特效就比较麻烦了.接下来看看借用frei0r插件怎么做: 简介 你可以将frei0r看作是一个"视频特效工具箱" ...
- 使用定时器:在logs目录,每两分钟产生一个文件
1.使用定时器:在logs目录,每两分钟产生一个文件(文件格式为:201711151323.log.201711151323.log.2017111513xx.log ...思路:定时器定时调用she ...
- 解决方案 | AutoCAD 版本+版本号+受支持的 .NET SDK版本+.NET Framework版本
关于 Managed .NET 兼容性 Managed .NET 应用程序通常与扩展基于 AutoCAD 的产品的行为和功能的公司和第三方应用程序关联. 在移植到最新版本后,并非所有 .NET 应用程 ...
- 拥抱未来:GPT-4将如何改变我们的世界
随着人工智能技术的迅猛发展,我们正迎来一个全新的智能时代.在这个时代的前沿,GPT-4作为开拓者和领航者,正在重新定义人机交互.创意创新和个性化服务的标准.无论是在商业领域.教育场景还是科研领域,GP ...
- 2023 NOIP 游记
\(\text{Day -INF}\) 提高 \(135\) 卡线进 \(\text{NOIP}\). 集训两天成绩:\(50 \to 135\). \(\text{Day 1}\) 开赛 \(13\ ...
- EFCore DbFirst从数据库生成实体类
1.点击"工具"->"NuGet包管理器"->"程序包管理器控制台" 分别安装以下几个包 Mysql 版本: Install-P ...
- Microsoft Azure AI 机器学习笔记-1
机器学习基础: 数据与建模: 数据统计和数学建模是处理数据和描述现实情况的关键工具. 观测值是记录的数据实例,而特征是描述观测对象的属性. 标签则代表监督式学习中的已知输出值. 学习类型: 监督式学习 ...
- ffmpeg一些笔记: 代码调试数据
1.AAC,MP3他的解码数据格式不支持,程序中给的是这个AV_SAMPLE_FMT_FLTP, Screen-Cpature-Recoder的codec-id为AV_CODEC_RAW_VIDEO ...
- 【C3】03 如何构建
既然你已经了解了什么是CSS,以及使用CSS的基础知识,是时候更深入的了解该语言本身的结构了. 我们已经见过了本页讨论的很多概念:如果在之后对某些概念感到困惑的话,可以返回至此进行回顾. 前置知识 在 ...