查找数组中是不是存在字符串[重复]
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<String>
【讨论】:
那是因为数组不是集合 @Dan - BZZZT - 你试图在数组上调用contains
,而不是Set
!!!
谢谢辛普索——我是说巴勃罗! :D Tahnks 斯蒂芬。菜鸟失误。【参考方案3】:
使用Arrays.asList()
将数组包装在List<String>
中,它确实有一个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
的文档明确指出:“如果数组包含不可相互比较的元素(例如,字符串和整数),则无法根据其元素的自然顺序对其进行排序,因此结果未定义。” 不要在Integer
或String
上使用binarySearch
,或者任何最多可以有偏序的元素。以上是关于查找数组中是不是存在字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章