Java Lambda List转Map代码实例
作者:龙凌云端 发布时间:2022-05-24 20:15:42
标签:Java,Lambda,List,Map
在有些开发场景,需要对 List 对象列表进行过滤处理,并将有用的数据存放到Map中。
例如:告警对象,包含告警uuid(alarmUuid) 和 设备uuid(objUuid),需要对 objUuid = -1的告警进行过滤,并将过滤后告警数据的alarmUuid和 objUuid以键值对的形式保存到Map中。
1、告警对象定义如下:
/**
* Created by Miracle Luna on 2020/3/16
*/
public class AlarmInfoResponse {
private String alarmUuid;
private String objUuid;
public AlarmInfoResponse(String alarmUuid, String objUuid) {
this.alarmUuid = alarmUuid;
this.objUuid = objUuid;
}
public String getAlarmUuid() {
return alarmUuid;
}
public void setAlarmUuid(String alarmUuid) {
this.alarmUuid = alarmUuid;
}
public String getObjUuid() {
return objUuid;
}
public void setObjUuid(String objUuid) {
this.objUuid = objUuid;
}
@Override
public String toString() {
return "AlarmInfoResponse{" +
"alarmUuid='" + alarmUuid + '\'' +
", objUuid='" + objUuid + '\'' +
'}';
}
}
2、过滤代码如下:
/**
* Created by Miracle Luna on 2020/3/16
*/
public class LambdaFilterListToMap {
public static void main(String[] args) {
List<AlarmInfoResponse> alarmInfoResponseList = new ArrayList<>();
AlarmInfoResponse response0 = new AlarmInfoResponse("alarm0", "-1");
AlarmInfoResponse response1 = new AlarmInfoResponse("alarm1", "1");
AlarmInfoResponse response2 = new AlarmInfoResponse("alarm2", "2");
AlarmInfoResponse response3 = new AlarmInfoResponse("alarm3", "3");
alarmInfoResponseList.add(response0);
alarmInfoResponseList.add(response1);
alarmInfoResponseList.add(response2);
alarmInfoResponseList.add(response3);
// 方式1:先使用foreach遍历(遍历过程中条件判断)
Map<String, String> alarmObjUuidMap1 = new HashMap<>();
alarmInfoResponseList.forEach(alarmInfoResponse -> {
if(!"-1".equals(alarmInfoResponse.getObjUuid())) {
alarmObjUuidMap1.put(alarmInfoResponse.getAlarmUuid(), alarmInfoResponse.getObjUuid());
}
});
System.out.println("============= 方式1 ====================");
alarmObjUuidMap1.forEach((alarmUuid, objUuid) -> System.out.println(alarmUuid + " : " + objUuid));
// 方式2:使用流过滤,再使用foreach遍历
Map<String, String> alarmObjUuidMap2 = new HashMap<>();
alarmInfoResponseList.stream().
filter(alarmInfoResponse -> !"-1".equals(alarmInfoResponse.getObjUuid())).
forEach(alarmInfoResponse -> alarmObjUuidMap2.put(alarmInfoResponse.getAlarmUuid(), alarmInfoResponse.getObjUuid()));
System.out.println("\n============= 方式2 ====================");
alarmObjUuidMap2.forEach((alarmUuid, objUuid) -> System.out.println(alarmUuid + " : " + objUuid));
}
}
3、运行结果如下:
============= 方式1 ====================
alarm2 : 2
alarm1 : 1
alarm3 : 3============= 方式2 ====================
alarm2 : 2
alarm1 : 1
alarm3 : 3
来源:https://www.cnblogs.com/miracle-luna/p/12508281.html


猜你喜欢
- 本文为大家分享了javaweb实现app扫码登录的具体代码,供大家参考,具体内容如下1.web页面主动向服务器索要一张由服务器生成包含维一标
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- String和List<String>间相互转换public void test() {  
- 工厂方法模式简述与简单工厂模式基本相同,只是工厂是一个抽象的,需要有具体的工厂去实现它,然后利用这个工厂生产产品,之所以出现这个模式是因为,
- 本文实例讲述了Android持久化技术之SharedPreferences存储。分享给大家供大家参考,具体如下:1、SharedPrefer
- [LeetCode] 205. Isomorphic Strings 同构字符串Given two strings s
- 今天遇到这样一个bug:客户端POST到服务器的一段数据导致服务器端发生未知异常。服务器端确认是编码转换错误。于是截取网络数据包进行分析,发
- using System;using System.Collections.Generic;using System.Globalizati
- 启动App进程Activity启动过程的一环是调用ActivityStackSupervisor.startSpecificActivity
- 要想实现android手机通过扫描名片,得到名片信息,可以使用脉可寻提供的第三方SDK,即Maketion ScanCard SDK,脉可寻
- DataTableDataTable 是 C# 中常用的一种数据表格类型,它类似于数据库中的表格,可以用来存储和处理数据。DataTable
- java中的前加加++和后加加++,有很多人搞的很晕,不太明白!今天我举几个例子说明下前++和后++的区别!其实大家只要记住一句话就可以了,
- 本文实例讲述了C#实现xml文件反序列化读入数据到object的方法。分享给大家供大家参考。具体实现方法如下:public static o
- 前言C++类中有几个特殊的非静态成员函数,当用户未定义这些函数时,编译器将给出默认实现。C++11前有四个特殊函数,C++11引入移动语义特
- 这个功能一共有两部分组成,第一部分是窗体代码,另外的一部分是一个辅助方法。直接贴出代码,以供大家参考:using System;using
- 1.RecycledPool的重用场景以及使用:多个RecyclerView出现,并且他们的item布局结构一致,这时候可以进行重用。在进行
- 1 修改项目打包类型在pom.xml里,项目打包类型将jar设置成war:<packaging>war</packagin
- 前言如果你玩过三国志这种类型的战旗游戏或者模拟城市、部落冲突、海岛奇兵这种模拟经营类的游戏,那么你对网格地图一定不会陌生。在这些游戏中,所有
- 多线程的好处是不言而喻的,它能帮我们刚更多的事情,同时干不同的事情在程序设计中是经常出现的,这种时候我们使用的是线程。在Kotlin 中,
- 目录前言概念什么是循环依赖?报错信息通俗版理解两人对峙必须有一人妥协Spring版理解实例化和初始化什么区别? * 缓存创建过程(简易版)创建