【问题标题】:How to compare the size of two lists and return a larger list?如何比较两个列表的大小并返回更大的列表?
【发布时间】:2022-06-16 20:24:43
【问题描述】:

我正在尝试编写一个返回两个列表中较大者的方法。

List<String> firstNames = new ArrayList<String>(); // size 50
List<String> lastNames = new ArrayList<String>(); // size 1000

我想比较它们的大小并返回一个更大的列表。像这样。

public List<String> largerList (List firstNames, List lastNames) {
return max.size(firstNames, lastNames);
}

【问题讨论】:

  • 不是大小是什么意思?是什么因素
  • 这些不是数组而是列表。如果您想比较两个List&lt;Integer&gt; 或两个List&lt;SomeClass&gt;,该怎么办?

标签: java


【解决方案1】:
public List<String> largerArray (List firstName, List lastName) {
    return firstName.size() > lastName.size() ? firstName : lastName;
}

虽然你的用例不是很清楚。如果 firstName 是一个列表,那么理想情况下它必须命名为 firstNames,如果不是这种情况,那么我不确定你到底想在那里做什么

【讨论】:

    【解决方案2】:

    您可以比较大小,然后选择要返回的列表。 另外,在访问实例方法之前不要忘记检查列表是否为空 (.size())

    public List<?> largerArray (List<?> l1, List<?> l2) {
        int lengthOfL1 = l1 == null ? 0 : l1.size();
        int lengthOfL2 = l2 == null ? 0 : l2.size();
    
        return (lengthOfL1 > lengthOfL2) ? l1 : l2;
    }
    

    注意:通过使用通配符 (?),您可以接受任意两个列表,因此您可以将字符串列表与整数列表进行比较,如果这是您想要的内容

    【讨论】:

    • 这不起作用。你试过了吗?
    • @WJS 我做了,它对我来说很好用
    • 创建两个List&lt;Integer&gt;并将其命名为List&lt;Integer&gt; result = largerArray(list1,list2);
    • @WJS 你的返回类型也将是 List>,而不是 ListList&lt;?&gt; result = largerArray(list1,list2); 工作正常。一个演员将是必要的。
    • 但这没用,除非你施法。这样做并尝试int x = result.get(0); List&lt;?&gt; 表示未知类型的列表。
    【解决方案3】:

    编写一个静态泛型方法来比较两个相同类型的列表。

    List<Integer> list1 = List.of(1,2,3,4);
    List<Integer> list2 = List.of(1,2,3,4,5);
        
    List<Integer> result = getLargest(list1,list2);
    System.out.println(result);
    

    打印

    [1, 2, 3, 4, 5]
    
    • 使用三元运算符进行比较
    • 如果大小相等,则返回list2
    public static <T> List<T> getLargest(List<T> list1, List<T> list2) {
         Objects.requireNonNull(list1);
         Objects.requireNonNull(list2);
         return list1.size() > list2.size() ? list1 : list2;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-19
      • 2017-01-17
      • 2017-05-11
      • 1970-01-01
      相关资源
      最近更新 更多