【问题标题】:Is there a better way to create a method that finds whether or not an integer value exists in an ArrayList?有没有更好的方法来创建一个查找 ArrayList 中是否存在整数值的方法?
【发布时间】:2021-01-10 06:53:30
【问题描述】:

该程序有一个 50 级的 ArrayList,调用的方法之一应该是查找 ArrayList 中是否存在值。这就是我所拥有的:

public void find(int g) {
int grade = 0;
if (grades.contains(g)) {
  grade++;
}

我做对了吗?

【问题讨论】:

  • 一种判断整数值是否存在的方法 - 使用“grade”变量的意义何在?该变量是在本地定义的,不会返回给调用方法,因此它实际上什么都不做。所以我并不真正理解该方法的意义。我原以为您的方法会简单地返回使用 contains() 方法的布尔结果。因为它是一个单一的陈述,我不确定你为什么要把它变成一种方法。我认为您需要澄清您的要求。
  • 如果你想在一个数组列表中计算一种等级的数量,那么没有。这只会找到第一次出现,而不是总数。它基本上与单独的contains() 做同样的事情。

标签: java arraylist methods


【解决方案1】:

从您发布的代码 sn-p 中,如果您的目的是找出 >= 指定数字的成绩计数,您可以使用下面的 sn-p 中的filter 方法

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,10,10,10);
long count = list.stream().filter(i -> i == 10).count();
System.out.println("count:" + count);

【讨论】:

    【解决方案2】:

    正如@markspace 评论的那样:

    它与单独的contains() 基本上做同样的事情。

    如果你声明一个 void 函数,你可能看不到结果。
    所以,局部变量 grade 实际上什么都不做。
    去做吧:

    public boolean isExist(int g) {
        return grades.contains(g);
    }
    

    如果要计算列表中某个元素的出现次数:
    参考:How to count the number of occurrences of an element in a List?

    int occurrences = Collections.frequency(grades, g);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-20
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 2012-02-10
      • 2016-10-28
      相关资源
      最近更新 更多