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 : 2alarm1 : 1alarm3 : 3
============= 方式2 ====================alarm2 : 2alarm1 : 1alarm3 : 3
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章:
1. IDEA EasyCode 一鍵幫你生成所需代碼2. IntelliJ IDEA設置條件斷點的方法步驟3. Java構建JDBC應用程序的實例操作4. Spring應用拋出NoUniqueBeanDefinitionException異常的解決方案5. ThinkPHP5 通過ajax插入圖片并實時顯示(完整代碼)6. javascript設計模式 ? 建造者模式原理與應用實例分析7. 一篇文章帶你了解JavaScript-對象8. Python使用oslo.vmware管理ESXI虛擬機的示例參考9. Express 框架中使用 EJS 模板引擎并結合 silly-datetime 庫進行日期格式化的實現方法10. 使用AJAX(包含正則表達式)驗證用戶登錄的步驟
