Java Lambda Lista 转 Mapa
En algunos escenarios de desarrollo, la necesidad de filtrar el objeto de lista de la lista y almacenar los datos útiles para el mapa.
Por ejemplo: el objeto de alarma, que comprende un UUID alarma (alarmUuid) y equipo UUID (objUuid), alarma objUuid = -1 necesidades de ser filtrado, y alarmUuid objUuid y almacenada en la forma de pares de clave y valor después de los datos de alarma de filtración al mapa.
1, el objeto de alarma se define como sigue:
/ ** * Creado por milagro Luna en 03/16/2020 * / público de clase AlarmInfoResponse { privada Cadena alarmUuid; privada objUuid cadena; pública AlarmInfoResponse (String alarmUuid, Cadena objUuid) { este .alarmUuid = alarmUuid; este .objUuid = objUuid; } Pública Cadena getAlarmUuid () { volver alarmUuid; } Pública vacío setAlarmUuid (String alarmUuid) { este .alarmUuid = alarmUuid; } públicaCadena getObjUuid () { regreso objUuid; } Pública vacío setObjUuid (String objUuid) { este .objUuid = objUuid; } @ Override pública Cadena toString () { retorno "AlarmInfoResponse {" + "alarmUuid = '" + alarmUuid + '\'' + "objUuid = '" + objUuid + '\'' + '}' ; } }
2, el código del filtro es la siguiente:
/ ** * Creado por milagro Luna en 03/16/2020 * / público de clase LambdaFilterListToMap { públicas estáticas void main (String [] args) { Lista <AlarmInfoResponse> alarmInfoResponseList = nuevo ArrayList <> (); AlarmInfoResponse response0 = nuevo AlarmInfoResponse ( "alarm0", "-1" ); AlarmInfoResponse desastres1 = nuevo AlarmInfoResponse ( "alarm1", "1" ); AlarmInfoResponse Respuesta2 = nuevo AlarmInfoResponse ( "ALARM2", "2" ); AlarmInfoResponse response3 (! "- 1" .equals (alarmInfoResponse.getObjUuid ())) {= Nuevo AlarmInfoResponse ( "Alarma 3", "3" ); alarmInfoResponseList.add (response0); alarmInfoResponseList.add (desastres1); alarmInfoResponseList.add (Respuesta2); alarmInfoResponseList.add (response3); // 方式1:先使用foreach遍历(遍历过程中条件判断) Map <String, String> alarmObjUuidMap1 = nuevo HashMap <> (); alarmInfoResponseList.forEach (alarmInfoResponse -> { si 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 = nuevo HashMap <> (); alarmInfoResponseList.stream (). filtro (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. Los resultados son como sigue:
. ============= realización ==================== 1 Alarma2: 2 ALARM1: . 1 Alarma 3: . 3 ====== ======= realización ==================== 2 Alarma2: 2 ALARM1: . 1 Alarma 3: . 3