当前位置: 首页 > 知识库问答 >
问题:

根据Java中的一个值重新排列列表

阳航
2023-03-14

创建一个Java方法,它将列表作为参数(MasterList)并返回另一个列表(ExpectedList)。

MasterList: 
{ 
    (ID :abc123, Count: 20),
    (ID :abc122, Count: 19),
    (ID :abc122, Count: 20),
    (ID :abc122, Count: 18),
    (ID :abc121, Count: 21),
    (ID :abc120, Count: 21),
    (ID :abc120, Count: 20)
}

列表中每个对象都有两个变量:

    null

我试图实现的逻辑是:当masterlist有多个ID相同的对象时,只考虑计数较大的特定对象。表示ID:abc122有3个对象,所以我只考虑(ID:abc122,Count:20),因为在ID:abc122的对象中Count更高。在结束时,方法应返回

ExpectedList:
    {
        (ID :abc123, Count: 20),
        (ID :abc122, Count: 20),
        (ID :abc121, Count: 21),
        (ID :abc120, Count: 21)
    }

共有1个答案

翟俊远
2023-03-14

使用Collectors.MaxBy在列表上进行流式传输,并收集对象(按ID分组并映射到具有最大计数的对象),以获得Map<字符串,可选的 > 。对值进行流式处理,打开可选项并将其收集到列表:

List<MyObject> result = 

list.stream()
    .collect(
            Collectors.groupingBy(
                    MyObject::getId, Collectors.maxBy(Comparator.comparing(MyObject::getCount))))
    .values()
    .stream()
    .map(Optional::get)
    .collect(Collectors.toList());
 类似资料:
  • 问题内容: 我确信这个问题以前可能已经被问过,但我似乎找不到正确的答案。如果我有两个清单 我正在尝试使用_list1重新排列_list2中的元素,以便它们完全匹配顺序。什么是最干净的方法?所需的输出: 很抱歉,如果这是重复的,但到目前为止,我只能使用压缩的sorted()方法找到数字列表的答案。 如果_list2是列表列表怎么办? 所需输出: 还有一个假设:如果我想使用_list1作为键对其他任何

  • 问题内容: 我有一个名为Vendor的表,在此表中有一个名为AccountTerms的列,该列仅显示一个值(即0、1、2、3),依此类推。我也有一个要使用()的列,以反映该值的含义,例如: 等等… 我需要的是一个脚本,它将查看AccountTerms中的值,然后将更新以显示上面显示的单词值。我该怎么做呢? 问题答案: 我将尝试以一种尽可能简单的方式来解释这一点,以便于理解: 假设您有一个这样的表设

  • 问题内容: 我有一个这样的字符串列表: 使用Y中的值对X进行排序以获取以下输出的最短方法是什么? 具有相同“键”的元素的顺序无关紧要。我可以求助于for结构的使用,但我好奇是否有更短的方法。有什么建议么? 问题答案: 最短代码 例: 一般来说 解释: 两个。 创建一个新的,list基于zip使用排序sorted()。 使用列表推导从排序的,压缩的中提取每对的第一个元素list。

  • 我看到过其他几个类似于这个问题的问题,但我还没有找到任何解决我的问题的方法。

  • 问题内容: 这个问题已经在这里有了答案 : SQL UPDATE SET哪一列等于另一列引用的相关表中的值? (10个答案) 7年前关闭。 我有两张桌子 table1(id,item,price)值: .... table2(id,item,price)值: 现在我要: 我该怎么做? 问题答案: 这样的事情应该做到: 您也可以尝试以下操作: