我有一个对象列表:
class MyObj{
String name;
int value;
...
}
此列表中的对象可以具有相同的名称,但具有不同的值。
List<MyObj> list = new ArrayList<>();
list.add(new MyObj("name1", 31));
list.add(new MyObj("name1", 442));
list.add(new MyObj("name2", 213));
list.add(new MyObj("name1", 31));
list.add(new MyObj("name2", 341));
list.add(new MyObj("name3", 131));
我的目标是制作另一个列表,其中没有同名的对象。并将所有相同对象的值添加到新对象中。
像这样:new MyObj("name1", 31+442+31)
...
我想不出正确的算法,如何获得所有“重复”的对象?
最佳答案
我会为此使用 map :
map = new HashMap()
for el in list:
if map.get(el.name) == null:
map.put(el.name, el)
else
map.put(el.name, new El(el.name, el.value + map.get(el.name).value))
result = map.values()
这个算法的复杂度 O(n*hashCodeOfString())
。基本上是 O(n)
关于java - 需要建议算法以从列表中获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43591585/