Categorías
Others

Transformar Stream usando Stream.flatMap ()

La flatMap() El método se puede utilizar para combinar un flujo de flujos con un flujo de objetos. En esta publicación, mostraré cómo usar flatMap () usando varios casos de uso.

Caso de uso 1

Suponga que tiene una lista de pedidos y cada pedido contiene una lista de artículos.

class Order{
	String orderId;
	ArrayList<Item> items = new ArrayList<Item>();
 
	// ... 
}
 
class Item{
	String itemId;
	String itemName;
 
	// ... 
}

Si desea obtener todos los elementos en todos los pedidos, puede usar flatMap () para nivelar el flujo de transmisiones.

ArrayList<Order> orders = new ArrayList<Order>();
Stream<Item> itemStream = orders.stream().flatMap(order -> order.getItems().stream());

Caso de uso 2

Si desea obtener un flujo de palabras, puede usar el siguiente código:

Path path = Paths.get("/tmp/foo");
Stream<String> lines = Files.lines(path, StandardCharsets.UTF_8);
Stream<String> words = lines.flatMap(line -> Stream.of(line.split("W+"))); //Split by non-word characters

Cada línea del archivo se convierte primero en un flujo de palabras y luego todos esos flujos se combinan en un solo flujo.

  Instalar Pandas sin acceso de root

Referencia:
Documento Java de Stream.flatMap ()

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *