Ich habe diese Klasse:Java 8 Collector mit Verketten
class Pair {
public String name;
public int age;
}
Und eine Liste:
List<Pair> list = new LinkedList<>();
list.add(new Pair("One", 25));
list.add(new Pair("Two", 18));
list.add(new Pair("Three", 18));
list.add(new Pair("Four", 10));
Wo Pair
nur zwei Werte enthält, eine String
und eine int
.
Ich möchte diese Daten durch seine age
Wert gruppieren, sondern auch verketten die name
. Im Finale will ich eine Map<Integer, String>
wie diese erhalten:
25 - One
18 - TwoThree
10 - Four
ich das versucht:
list.stream().collect(Collectors.groupingBy(Pair::getValue, /* Collectors.??? */));
Es Methoden sind wie summingInt
, kann aber nichts für String
Werte finden.
Ich sehe, es gibt eine Collectors.reducing
Methode, ich denke, wir können es vielleicht verwenden, nicht sicher, wie man es tut.
Gibt es eine elegante Möglichkeit, es mit Build Collectors
zu tun, oder muss ich mein eigenes machen?
Klingt, als ob Sie nach 'Collectors.joining' suchen. –
Wie definiere ich in '' Collectors.joining'', dass ich '' name'' Wert verketten möchte? Soweit ich weiß, können Sie es für eine Liste von '' String'' anwenden, aber ich habe hier eine Liste von '' Paar'' –
'Collectors.mapping (Pair :: getName, Collectors.joining())'. –