Учитывая класс Java Что-то
class Something {
private int parentKey;
private String parentName;
private int childKey;
private int noThings;
public Something(int parentKey, String parentName, int childKey,
int noThings) {
this.parentKey = parentKey;
this.parentName = parentName;
this.childKey = childKey;
this.noThings = noThings;
}
public int getParentKey() {
return this.parentKey;
}
public int getNoThings() {
return this.noThings;
}
}
У меня есть список объектов
List<Something> somethings = newArrayList(
new Something(425, "Lemon", 44, 23),
new Something(123, "Orange", 125, 66),
new Something(425, "Lemon", 11, 62),
new Something(123, "Orange", 126, 32),
new Something(323, "Lime", 25, 101),
new Something(123, "Orange", 124, 88)
);
Я хочу иметь возможность сортировать их так, чтобы они сортировались по совокупной сумме noThings для каждого родительского объекта, а затем по noThings.
Так что я в конечном итоге с
List<Something> sortedSomethings = newArrayList(
new Something(123, "Orange", 124, 88),
new Something(123, "Orange", 125, 66),
new Something(123, "Orange", 126, 32),
new Something(323, "Lime", 25, 101),
new Something(425, "Lemon", 11, 62),
new Something(425, "Lemon", 44, 23)
);
Я знаю, что сопоставить его с помощью parentKey и суммы noThings
Map<Integer, Integer> totalNoThings = colns
.stream()
.collect(
Collectors.groupingBy(
Something::getParentKey,
Collectors.summingInt(ClientCollectionsReceived::getNoThings)));
Я подумал, что, возможно, как-то сработает обертка моего класса Something и общее количество для каждого родительского ключа.
class SomethingWrapper {
private int totalNoThingsPerClient;
private Something something;
}
Но кажется, что это много работы и не очень элегантно.
Любые наблюдения/идеи будут с благодарностью оценены.