Быстрый вопрос. Предположим, что у меня есть функция total (List List), и у меня есть класс MyObject, который имеет строку String и int, показанную ниже, и я хочу сравнить две разные строки объектов в моем общем методе. Если они совпадают, добавьте значение для обоих из них. В противном случае ничего не делайте.Есть ли способ сравнить два объекта в списке и объединить их наиболее оптимальные значения (Java)
Например, данные {[Johanna, 200], [Jack, 205], [Johanna, 100], [Jack, 50]};
Выход должен быть похож на {[Johanna, 300], [Jack, 255]};
public static class MyObject {
int value;
String name;
public MyObject(String nm, int val)
{
name = nm;
value = val;
}
}
public void total(List<MyObject> list) {
List<MyObject> newList = new ArrayList<MyObject>();
Collections.sort(list);
Iterator<Order> ItrL = list.iterator();
int index = 0;
while(ItrL.hasNext())
{
MyObject compare = ItrL.next();
Iterator<MyObject> ItrR = list.listIterator(index);
index++;
while (cmp.name.equals(ItrR.next().name)))
newList.add(new MyObject(cmp.name, cmp.value + ItrR.value));
}
}
Что такое '' Order' в итератора '? Кроме того, в каком классе есть метод «total», поскольку он написан после закрытия класса MyObject? –
Как работает 'Collections.sort()', если вы не дадите 'compareTo', который обеспечивает общий порядок? –
У меня уже есть эти функции, даже итератор. Просто выяснить, есть ли все-таки, чтобы сравнить две вещи без повторения пунктов, которые уже были вызваны? Также я исправил код для некорректных имен и типов – Sleek13