Java 查找数组中是否存在字符串

Java 查找数组中是否存在字符串,java,arrays,Java,Arrays,好的,假设我有一个数组,里面填充了{“tube”,“are”,“fun”},然后我有一个JTextField,如果我键入其中的任何一个命令来做一些事情,如果我不想得到一条消息,说“Command NOT found” 我试着在Java文档中查找,但我得到的只是一些我不想要的东西,比如问题和东西。。。那么,这是如何做到的?我知道有一个“数组内”函数,但我不太擅长将两者结合起来 谢谢 以下是我到目前为止的情况: String[] dan = {"Red", "Orange", "Yellow", "

好的,假设我有一个数组,里面填充了{“tube”,“are”,“fun”},然后我有一个JTextField,如果我键入其中的任何一个命令来做一些事情,如果我不想得到一条消息,说“Command NOT found”

我试着在Java文档中查找,但我得到的只是一些我不想要的东西,比如问题和东西。。。那么,这是如何做到的?我知道有一个“数组内”函数,但我不太擅长将两者结合起来

谢谢

以下是我到目前为止的情况:

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

但我在dan中找不到符号。包含

这是您要查找的:

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

boolean contains = dan.contains(say.getText());
List dan=Arrays.asList(“红色”、“橙色”、“黄色”、“绿色”、“蓝色”、“紫色”、“橙色”、“蓝色”);
boolean contains=dan.contains(比如.getText());

如果您有一个不重复的值列表,则更愿意使用具有相同方法的
如果您可以按排序顺序组织数组中的值,则可以使用
数组.binarySearch()
。否则,您将不得不编写循环并执行线性搜索。如果您计划在数组中有一个大的(多于几十个)字符串,请考虑使用SET来代替。

< P>使用数组将数组封装在<代码>列表> />代码中,这有一个方法:

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

这可以在Java8中使用流来完成

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());

呃,如果我说数组是永久的,并且一个顺序都不改变,这有关系吗?“还有比这更简单的方法吗?”丹-我想他的第一句话回答了这个问题。“你知道如何手工对字符串排序,是吗?”吉姆,这个答案不正确。
#binarySearch
的文档明确指出:“如果数组包含相互不可比较的元素(例如字符串和整数),则无法根据其元素的自然顺序对其排序,因此结果未定义。”不要在
Integer
String
上使用
binarySearch
,也不要使用任何最多只能有偏序的元素。这是因为数组不是set@Dan-BZZZT-您正试图调用数组上的
包含
,而不是
!!!谢谢辛普森-我是说巴勃罗D塔恩克斯斯蒂芬。菜鸟的错误。谢谢。。。这就是我要找的。简单!这是最好的答案。其他的失败是因为
asList
返回非参数化的泛型。
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());