在Java中的arraylist中搜索整数

时间:2019-07-18 09:19:26

标签: java

public class FindNumber {

            static String findNumber(List<Integer> arr, int k) {
                String res = "YES";
    //Unable to identify problem with this part of the code
                for (int i = 0; i < arr.size(); i++) {
                    if (k == arr.get(i))
                        res = "YES";
                    else
                        res = "NO";

                }

                return res;

            }
}

即使列表中存在整数,上述代码也不会返回NO。

6 个答案:

答案 0 :(得分:1)

您可以只使用arr.contains()来获取布尔值,以确定Integer是否在列表中。然后,您可以将此值转换为YESNO(如果确实需要):

String yesNo = arr.contains(k) ? "YES" : "NO";

答案 1 :(得分:0)

这将起作用:

keywords

找到整数后,您必须停止循环,您可以使用static String findNumber(List<Integer> arr, int k) { String res = "YES"; for (int i = 0; i < arr.size(); i++) { if (k == arr.get(i)) res = "YES"; break; else res = "NO"; } return res; }

答案 2 :(得分:0)

尝试优化您的代码...。

方法1(使用for-each循环):

 static String findNumber(List<Integer> arr, int k) { 
        for (Integer integer : arr) {
            if (integer == k) {
                return "YES";
            }
        }
        return "NO"; 
    }

另一种方法是(使用三元运算符):

static String findNumber(List<Integer> arr, int k) { 
    return arr.contains(k) ? "YES" : "NO";
}

答案 3 :(得分:0)

使用流:

static String findNumber(List<Integer> arr, int k) {
    return arr.stream()
        .filter(e -> e == k)
        .findFirst()
        .map(e -> "YES")
        .orElse("NO");
}

答案 4 :(得分:0)

    public static String isListContainsNumber(List<Integer> nums, int n) {
           return nums.stream().anyMatch(el -> el.equals(n)) ? "YES" : "NO";
    }

答案 5 :(得分:0)

您的代码的主要问题是,即使在ArrayList中找到一个整数对象,将res设置为Yes后,它仍然继续迭代。因此,列表中可能存在其他值,而不是所需的数据类型,从而将res设置回No。 这里的解决方案是使用跳转语句(例如break),一旦遇到整数,该语句将终止循环过程。 希望对您有帮助!