java - 有没有办法比较列表中的两个对象并组合它们的最佳值?(Java)

标签 java compare

快速提问。假设我有一个函数 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/

相关文章:

java - 首选项 API 存储

java - 如何在 Java 中访问 Perl 变量?

algorithm - 如何在逐字节比较之前首先检查文件是否相等?

c# - 此 Icomparer 中导致空引用的不一致在哪里?

java - Spring security - 休息服务的自定义过滤器和入口点

java - jsp servlet文件上传doGet

java - Java中获取接口(interface)的父接口(interface)

C++ MFC如何在if语句中比较LPCTSTR?

java - 为什么trim()给我字符串常量池引用?

python - 在python中查找另一个文件中一个文本文件的条目