Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
Refactorización de un bucle anidado en flujos de Java 8 que recopilan los objetos externos

Tengo un bucle que hace lo que quiero: agrega objetos de tipo A a la lista de results :

 ArrayList<A> results = new ArrayList<>(); for (A a: listOfA) { for (B b : a.getListOfB()) { if ("myString".equals(b.getMyString())) { results.add(a); } } }

Ahora me gustaría refactorizar mi código usando secuencias de Java 8 y se me ocurrió esta solución con la que estoy atrapado porque recopila objetos de tipo B en lugar de A - List<A> results = ... es obviamente incorrecto:

 List<A> results = listOfA.stream() .flatMap(a -> a.getListOfB().stream()) .filter(b -> "myString".equals(b.getMyString())) .collect(Collectors.toList());

¿Cómo puedo recopilar una lista de tipo A usando flujos de Java 8?


Encontré muchos resultados aquí en SO buscando secuencias foreach anidadas [java], pero no pude encontrar nada que se adaptara a mis necesidades.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No necesitas flatMap aquí. Simplemente aplique un filter en Stream<A> .

 List<A> results = listOfA.stream() .filter(a -> a.getListOfB() .stream() .anyMatch(b -> "myString".equals(b.getMyString()))) .collect(Collectors.toList());

Esto supone que no desea agregar una instancia de A varias veces a la List si tiene varias instancias de B que coinciden con "myString" .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda