У меня есть список объектов (ObjectX
), и я хочу суммировать вхождения этого поля (fieldX
) от этого объекта для каждого элемента списка с тем же id (idX
).Как использовать функцию SUM на объекте ArrayList
Пример folderList:
idX fieldX fieldYY
ObjectX1 : 1 50 a
ObjectX2 : 1 null a
ObjectX3 : 1 30 a
ObjectX4 : 2 99 b
Я хочу получить:
idX fieldX fieldYY
ObjectX1 : 1 80 a
ObjectX2 : 2 99 b
Я начал сортировки списка перегруппировать объекты с тем же idX
: (я использую Java 1.6)
Collections.sort(folderList, new Comparator<ObjectX>()
{
public int compare(final ObjectX objOne, final ObjectX objTwo)
{
Integer orderFirst = objOne.getOrders();
Integer orderSecond = objTwo.getOrders();
Integer dareOne = new Integer(0);
Integer dareTwo = new Integer(0);
int sComp = orderFirst.compareTo(orderSecond);
if (sComp != 0) {
return sComp;
}
else {
dareOne = objOne.getFolderNum();
dareTwo = objTwo.getFolderNum();
return dareOne.compareTo(dareTwo);
}
}
});
Но я не понимаю, как я могу в то же время суммируйте значения fieldX
и получите только одну строку на fieldX
(как функция SUM() в SQL) эффективным образом.
Что происходит с 'полемYY'? Или, если 'idX' то же самое,' fieldY' тоже то же самое? Возможно, вам понадобится «Карта» с 'idX' в качестве ключа. – Teepeemm
Поле YY всегда будет одинаковым для всех вхождений данного idX. – redAce