Java Lambda List轉(zhuǎn)Map代碼實(shí)例
在有些開(kāi)發(fā)場(chǎng)景,需要對(duì) List 對(duì)象列表進(jìn)行過(guò)濾處理,并將有用的數(shù)據(jù)存放到Map中。
例如:告警對(duì)象,包含告警uuid(alarmUuid) 和 設(shè)備uuid(objUuid),需要對(duì) objUuid = -1的告警進(jìn)行過(guò)濾,并將過(guò)濾后告警數(shù)據(jù)的alarmUuid和 objUuid以鍵值對(duì)的形式保存到Map中。
1、告警對(duì)象定義如下:
/** * 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、過(guò)濾代碼如下:
/** * 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遍歷(遍歷過(guò)程中條件判斷) 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:使用流過(guò)濾,再使用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、運(yùn)行結(jié)果如下:
============= 方式1 ====================alarm2 : 2alarm1 : 1alarm3 : 3
============= 方式2 ====================alarm2 : 2alarm1 : 1alarm3 : 3
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. CentOS郵箱服務(wù)器搭建系列——SMTP服務(wù)器的構(gòu)建( Postfix )2. Docker 啟動(dòng)Redis 并設(shè)置密碼的操作3. ASP新手必備的基礎(chǔ)知識(shí)4. PHP基礎(chǔ)之生成器4——比較生成器和迭代器對(duì)象5. asp文件用什么軟件編輯6. JAVA 實(shí)現(xiàn)延遲隊(duì)列的方法7. JS中6個(gè)對(duì)象數(shù)組去重的方法8. vue+element開(kāi)發(fā)一個(gè)谷歌插件的全過(guò)程9. 利用CSS制作3D動(dòng)畫(huà)10. vue限制輸入數(shù)字或者保留兩位小數(shù)實(shí)現(xiàn)

網(wǎng)公網(wǎng)安備