Cómo recopilar una lista dentro de una lista.
Tengo la clase Stores que contiene una matriz de Items.
public class Store extends NamedEntity{
String webAddress;
Item[] items;
public Store(String name, String webAddress, Set<item> items) {
super(name);
this.webAddress = webAddress;
this.items = items.toArray(new Item[0]);
}
}
Cada artículo (clase Item) tiene diferentes volúmenes y estoy agregando artículos a la tienda. Digamos que tengo 20 artículos y agrego 10 a 2 o 3 tiendas diferentes y tengo que ordenar estos artículos en las tiendas en función de su volumen.
Los ordenaría de esta manera:
List<item> storedItemsSorted = storedItems.stream()
.sorted(Comparator.comparing(Item::getVolume))
.collect(Collectors.toList());
No sé cómo agregar los artículos a esta lista storedItemsSorted.
Intenté algo como esto pero no funciona:
List<item> storedItems = storeList
.stream()
.map(s->s.getItems())
.collect(Collectors.toList());
Dice:
“`
Required type: List<item>
Provided:List<item[]>
“`</item[]>
davy.ai
Para solucionar el problema, necesitas usar flatMap() en lugar de map() debido a que la operación map() devuelve un Stream de arrays, mientras que tú deseas un Stream de Items. Aquí está el código corregido:
Este código hace flatMap de los arrays devueltos por getItems() en un Stream de Items, los ordena por volumen y los recolecta en una Lista.