Arrays.asList returns 错误

Arrays.asList returns false

我只想检查我的 String[] 数组是否包含 "n" 或 "s"。

String[] coordinatesExample = {"57.8136°s", "28.3496°e"};

private void isContains(String[] coordinates) {

    boolean contains = Arrays.asList(coordinates).contains("s");
        if (contains) {
            System.out.println("It works!");
        }else {
            System.out.println("RAKAMAKAFO");
        }

所以我预计:"It works!",但是 事实上:"RAKAMAKAFO"

我做错了什么?

当您执行 Arrays.asList(coordinates) 时,您会得到包含两项的列表:57.8136°s28.3496°e。所以使用 .contains("s") 你测试你的任何项目是否是 "s" 显然不是这种情况。

您当前的解决方案只有在您有这样的字符串数组时才有效:

String[] coordinatesExample = {"57.8136°s", "28.3496°e", "s"};

如果您想检查数组中的任何字符串是否包含 "n" 或 "s".

,请试试这个
private static void isContains(String[] coordinates) {
    boolean contains = Arrays.stream(coordinates)
            .anyMatch(coordinate -> coordinate.contains("s") || coordinate.contains("n"));
    if (contains) {
        System.out.println("It works!");
    } else {
        System.out.println("RAKAMAKAFO");
    }
}

仅包含检查列表是否包含 s 不存在的元素之一。

来自 List 接口的 JavaDoc

boolean contains​(Object o)

Returns true if this list contains the specified element. More formally, returns true if and only if this list contains at least one element e such that Objects.equals(o, e).

如果您执行以下操作,它将 return 打印 It works! 因为列表中的 first string 包含一个 s

private static void isContains(String[] coordinates) {

    boolean contains = Arrays.asList(coordinates).get(0).contains("s");
        if (contains) {
            System.out.println("It works!");
        }else {
            System.out.println("RAKAMAKAFO");
        }
    }
}