查找数组中是不是存在字符串[重复]

Posted

技术标签:

【中文标题】查找数组中是不是存在字符串[重复]【英文标题】:Find if a String is present in an array [duplicate]查找数组中是否存在字符串[重复] 【发布时间】:2011-04-04 01:42:07 【问题描述】:

好吧,假设我有一个填充了 "tube", "are", "fun" 的数组,然后我有一个 JTextField,如果我键入其中任何一个命令来做某事,如果不是消息说“找不到命令”。

我尝试查看 Java 文档,但我得到的只是一些我不想要的东西,比如问题和其他东西……那么,这是如何完成的?我知道有一个“in array”函数,但我不太擅长将两者结合在一起。

谢谢。

这是我目前所拥有的:

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

但我在 dan.contains 中找不到符号

【问题讨论】:

【参考方案1】:

这可以在 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());

【讨论】:

这是最好的答案。其他失败是因为 asList 返回非参数化泛型。【参考方案2】:

这就是你要找的东西:

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

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

如果您有一个不重复值的列表,最好使用具有相同contains 方法的Set&lt;String&gt;

【讨论】:

那是因为数组不是集合 @Dan - BZZZT - 你试图在数组上调用contains,而不是Set!!! 谢谢辛普索——我是说巴勃罗! :D Tahnks 斯蒂芬。菜鸟失误。【参考方案3】:

使用Arrays.asList() 将数组包装在List&lt;String&gt; 中,它确实有一个contains() 方法:

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

【讨论】:

【参考方案4】:
String[] a= "tube", "are", "fun";
Arrays.asList(a).contains("any");

【讨论】:

谢谢...很好的例子 这就是我要找的。简单!【参考方案5】:

如果您可以按排序顺序组织数组中的值,那么您可以使用Arrays.binarySearch()。否则,您将不得不编写一个循环并进行线性搜索。如果您打算在数组中包含大量(超过几十个)字符串,请考虑使用 Set。

【讨论】:

呃,如果我说数组是永久的并且根本不会按顺序更改,这有关系吗?还有比这更简单的方法吗? @Dan - 我认为他的第一句话回答了这个问题。您确实知道如何手动对字符串进行排序,不是吗? @Jim,这个答案不正确。 #binarySearch 的文档明确指出:“如果数组包含不可相互比较的元素(例如,字符串和整数),则无法根据其元素的自然顺序对其进行排序,因此结果未定义。” 不要IntegerString上使用binarySearch,或者任何最多可以有偏序的元素。

以上是关于查找数组中是不是存在字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB查找字符数组中是不是存在特定的字符串

如何查找数组是不是包含字符串[重复]

java在数组里查找数据

c语言,查找数组中是不是存在某个数?

如何在 Perl 中使用 grep 检查字符串是不是存在 [重复]

Leetcode刷题Python子数组查找