Ich habe eine Liste von 1D-Arrays in ein Objekt gewickelt, ich möchte sie in 1 einzigen Array mit Java-8-Stream sammeln und sammeln.Verketten Liste von Objekten Arrays in Java8
Gegeben Klasse Artikel mit einer Reihe von
class A{
int x;
}
class Item{
A[] parts=new A[];
public A[] getParts(){
return parts;
}
}
Also, wenn ich Liste l
List<Item> l=new ArrayList<>();
l.add(new Item());
l.add(new Item());
Ich brauche den Inhalt in diesem beide Objekt in einem einzigen Array vom Typ A zu sammeln
Also wenn das erste Element parts={1,2}
und das zweite Element parts={3,4}
hat, sollte die Ausgabe irgendwie wie
A[] out={1,2,3,4}
Ich versuchte
l.stream().map(Item::getParts).collect(Collectors.toList()).toArray(new A[n]);
zu tun, aber apperantly hat es meany Probleme.
ich meine Antwort gelöscht, werden Sie mehr erfahren durch die Stream-Tutorial lesen https://docs.oracle .com/javase/tutorial/sammlungen/ströme /. Dein Code wird nicht kompiliert. – Tunaki
Ihre Methode heißt 'getParts()', nicht 'getparts()'. Und streamen Sie als [toArray()] (https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#toArray-java.util.function.IntFunction-) -Methode sowie eine flatMap() -Methode. –
Um die Elemente eines Arrays zu streamen, müssen Sie 'Arrays.stream (myArray)' verwenden. Momentan ist Ihre Liste eine Liste von Arrays, keine Liste von Elementen aus den Arrays. – Andreas