Найти, если String присутствует в массиве
ОК, скажем, у меня есть массив, заполненный { "tube", "are", "fun" }, а затем у меня есть JTextField, и если я нахожу одну из этих команд, чтобы что-то сделать, и если НЕ сообщение "Команда не найдена".
Я пробовал искать в документах Java, но все, что я получаю, это вещи, которые мне не нужны, как вопросы и прочее... так, как это делается? Я знаю, что есть функция "в массиве", но я не слишком хорош, комбинируя их вместе.
Спасибо.
Вот что я до сих пор:
String[] dan = {"Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue"};
boolean contains = dan.contains(say.getText());
но я получаю не могу найти символ в dan.contains
Ответы
Ответ 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()
. В противном случае вам придется писать цикл и линейный поиск. Если вы планируете иметь большую (более нескольких десятков) строк в массиве, рассмотрите возможность использования набора.
Ответ 5
Я согласился с Arrays.asList(). содержит метод, но он не эффективен. Я должен сказать, что вы должны протестировать эти 4 метода.
http://www.programcreek.com/2014/04/check-if-array-contains-a-value-java/
Ответ 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());