kullanarak bir sınıfın mülkiyet için düz eşleme toplayıcı Bu sınıf var.GrupingBy
class Assignment {
private Integer index;
private List<Quantity> quantities;
}
O zaman, bu sınıftaki nesnelerin bir listesi var.
List<Assigment> assignments = new ArrayList<>();
Assignment
gelen indeks ve değerler olarak List<Quantity>
içeren bir Map
oluşturmak için bir yolu var mı?
Şimdiye kadar denediğim şey budur.
assignments.stream().collect(groupingBy(Assignment::getIndex));
Ama bu bana bir Map<Integer, List<Assignment>>
verir ve ben bir Map<Integer, List<Quantity>>
istiyorum.
Ben forEach
yöntemi kullanarak denedi - ve workes - ama tek astar bunu yapmanın yolu olmalı eminim - var gibi görünüyor ya da en azından kullanan tek collect
ve groupingBy
yöntemleri
: bir
Stream<Quantity>
dönerAssignment
içinyöntem olup, bu kodu kullanabilir. Ayrıca bkz. [Bu cevap] (http://stackoverflow.com/a/39131049/2711488). 3. alternatif “.collect (groupingBy (Assignment :: getIndex, Collector.of (ArrayList :: new, (l, a) -> l.addAll (a.getQuantities()), (a, b) -> olabilir. {a.addAll (b); return a;}))); ' – Holger