Ist es möglich, Strings über Sammlung während der Gruppierung zu sammeln? Das ist, wie es funktioniert in Java 8:Kann Joiner (Collector, Akkumulator) über die Funktion mit Java Guava angewendet werden?
Map<String, String> discountOptions = p.getDiscountOptions().Stream()
.collect(groupingBy(
this::getDiscountName,
Collectors.mapping(this::getValue, Collectors.joining(","))));
Ich bin neugierig, gibt es prägnante Art und Weise es in Google Guava zu tun? Das ist, wie ich versuche, es zu replizieren in Guava:
Map<String, Collection<String>> stringCollectionMap = Multimaps.transformValues(
Multimaps.index(p.getDiscountOptions(),
new Function<DiscountOption, String>() {
@Override
public String apply(DiscountOption d) {
return getDiscountName(d);
}
}),
new Function<DiscountOption, String>() {
@Override
public String apply(DiscountOption d) {
return getValue(d);
}
}).asMap();
Map<String, String> discountOptions = Maps.transformValues(
stringCollectionMap,
new Function<Collection<String>, String>() {
@Override
public String apply(Collection<String> strings) {
return Joiner.on(",").join(strings);
}
});
Wenn du sagst "Mach es in Google Guava" meinst du "mach es ohne Java 8 Sprachfunktionen"? Oder warum verwenden Sie für diese funktionalen Schnittstellen keine Lambda-Ausdrücke/Methoden? – Holger
Ja, ohne Java 8 und mein Ziel ist es in imperativer Weise zu tun. –