Java Lambda List轉(zhuǎn)Map代碼實例
在有些開發(fā)場景,需要對 List 對象列表進行過濾處理,并將有用的數(shù)據(jù)存放到Map中。
例如:告警對象,包含告警uuid(alarmUuid) 和 設(shè)備uuid(objUuid),需要對 objUuid = -1的告警進行過濾,并將過濾后告警數(shù)據(jù)的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、運行結(jié)果如下:
============= 方式1 ====================
alarm2 : 2
alarm1 : 1
alarm3 : 3============= 方式2 ====================
alarm2 : 2
alarm1 : 1
alarm3 : 3
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決IntelliJ IDEA創(chuàng)建spring boot無法連接http://start.spring.io/問題
這篇文章主要介紹了解決IntelliJ IDEA創(chuàng)建spring boot無法連接http://start.spring.io/問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
使用Jenkins來構(gòu)建SVN+Maven項目的實現(xiàn)
這篇文章主要介紹了使用Jenkins來構(gòu)建SVN+Maven項目的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
SpringBoot項目中分頁插件PageHelper無效的問題及解決方法
這篇文章主要介紹了解決SpringBoot項目中分頁插件PageHelper無效的問題,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
spring security國際化及UserCache的配置和使用
這篇文章主要介紹下國際化的配置及UserCache的配置及使用教程,感興趣的朋友參考下實現(xiàn)代碼吧2017-09-09

