Подтвердить что ты не робот

Найти, если String присутствует в массиве

ОК, скажем, у меня есть массив, заполненный { "tube", "are", "fun" }, а затем у меня есть JTextField, и если я нахожу одну из этих команд, чтобы что-то сделать, и если НЕ сообщение "Команда не найдена".

Я пробовал искать в документах Java, но все, что я получаю, это вещи, которые мне не нужны, как вопросы и прочее... так, как это делается? Я знаю, что есть функция "в массиве", но я не слишком хорош, комбинируя их вместе.

Спасибо.

Вот что я до сих пор:

String[] dan = {"Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue"};
boolean contains = dan.contains(say.getText());

но я получаю не могу найти символ в dan.contains

4b9b3361

Ответ 1

Это то, что вы ищете:

List<String> dan = Arrays.asList("Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue");

boolean contains = dan.contains(say.getText());

Если у вас есть список значений не повторяется, предпочитайте использовать Set<String>, который имеет тот же contains метод

Ответ 2

String[] a= {"tube", "are", "fun"};
Arrays.asList(a).contains("any");

Ответ 3

Используйте Arrays.asList(), чтобы обернуть массив в List<String>, у которого есть contains():

Arrays.asList(dan).contains(say.getText())

Ответ 4

Если вы можете упорядочить значения в массиве в отсортированном порядке, вы можете использовать Arrays.binarySearch(). В противном случае вам придется писать цикл и линейный поиск. Если вы планируете иметь большую (более нескольких десятков) строк в массиве, рассмотрите возможность использования набора.

Ответ 6

Это можно сделать в java 8, используя Stream.

import java.util.stream.Stream;

String[] stringList = {"Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue"};

boolean contains = Stream.of(stringList).anyMatch(x -> x.equals(say.getText());