Arrays.asList возвращает false - PullRequest
       18

Arrays.asList возвращает false

0 голосов
/ 18 февраля 2020

Я просто хочу проверить, содержит ли мой массив 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");
        }

Итак, я ожидал: "Это работает!", Но на самом деле: "RAKAMAKAFO"

Что я не так сделал?

Ответы [ 3 ]

1 голос
/ 18 февраля 2020

Ваше текущее решение работает, только если у вас есть строковый массив, подобный этому:

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");
    }
}
0 голосов
/ 18 февраля 2020

Содержит только проверки, чтобы видеть, содержит ли список один из элементов, который s не один.

Из JavaDo c для интерфейса List

boolean содержит (Объект o)

Возвращает значение true, если этот список содержит указанный элемент. Более формально, возвращает true, если и только если этот список содержит хотя бы один элемент e, такой как Objects.equals (o, e).

Если вы сделали следующее, он вернул бы print 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");
        }
    }
}
0 голосов
/ 18 февраля 2020

Когда вы делаете Arrays.asList(coordinates), вы получаете список, содержащий два элемента: 57.8136°s и 28.3496°e. Поэтому, используя .contains("s"), вы проверяете, является ли какой-либо из ваших предметов "s", что явно не так.

...