快速提问。假设我有一个函数 Total (列表列表),并且有一个 MyObject 类,该类有一个 String 和一个 int 显示在下面,我想在我的 Total 方法中比较两个不同的对象字符串。如果相同,则将两者的值相加。否则,什么也不做。
例如数据是 {[约翰娜,200],[ jack ,205],[约翰娜,100],[ jack ,50]};
输出应该类似于 {[约翰娜,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));
}
}
最佳答案
您可以并行进行求和和比较,无需先使用流进行排序。
List<MyObject> newList = Arrays.asList(
new MyObject("Johanna", 200),
new MyObject("Jack", 205),
new MyObject("Johanna", 100),
new MyObject("Jack", 50)
);
Map<String,Integer> map =
newList.stream().parallel()
.collect(Collectors.groupingBy(mo -> mo.name,
Collectors.summingInt(mo -> mo.value)));
System.out.println("map = " + map);
关于java - 有没有办法比较列表中的两个对象并组合它们的最佳值?(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33682637/