我想知道在Java中是否有办法做这样的事情:
if(word in stringArray) {
...
}
我知道我可以为此创建一个函数,但我只是想知道Java是否已经为此做了一些事情。
谢谢!
答案 0 :(得分:21)
有许多系列可以让你做类似的事情。例如:
使用Strings
:
String s = "I can has cheezeburger?";
boolean hasCheese = s.contains("cheeze");
List<String> listOfStrings = new ArrayList<String>();
boolean hasString = listOfStrings.contains(something);
但是,简单的String[]
没有类似的构造。
答案 1 :(得分:13)
Java语言设计强大但也很简单。在语言层面上没有Java中的这样的操作符,但是为了方便这样的查询,肯定编写了库。
如果你想知道某个对象是否是某些对象集的成员,那么你应该使用 - 还有什么? - Set
而不是数组。这些数据结构自然允许这样的查询,更好的是,它们优化用于此类查询。
您可以轻松检查给定字符串是否在Set<String>
中,如下所示:
String[] arr = { "Alice", "Bob", "Carol" };
Set<String> names = new HashSet<String>(Arrays.asList(arr));
System.out.println(names.contains("Alice")); // true
System.out.println(names.contains("Dean")); // false
使用HashSet
,contains
是一个固定时间操作。这比通过数组的线性搜索要好得多。
您应该熟悉Java Collections Framework为您提供哪些数据结构。它们允许您编写惯用的,可维护的,灵活的代码,并且可以使用许多适用于这些数据结构的强大算法。
答案 2 :(得分:11)
在SQL中
x in ('Alice', 'Bob', 'Carol')
在Java中:
Arrays.asList("Alice", "Bob", "Carol").contains(x)
答案 3 :(得分:7)
Java没有“in”运算符。
对于数组,您需要迭代它们并查找匹配的项目。
对于列表,您可以使用contains
方法。
答案 4 :(得分:3)
您可以将java.util.Collection.contains()用于集合。如果您拥有的是非null数组,则可以使用java.util.Arrays.asList(array).contains()。
答案 5 :(得分:2)
tabs[j].indexOf("lelamondeestgrand...")!=0
答案 6 :(得分:2)
没有数组:
public static <T> boolean in(T value, T... list) {
for (T item : list) {
if (value.equals(item))
return true;
}
return false;
}
用法:
int val = 1;
assert in(val, 1,2,3,4);
答案 7 :(得分:1)
if(myArrayList.contains("hello"))
{
// yay
}
答案 8 :(得分:1)
首先取决于数组是一个数组。如果它是确切单词的数组,则可以将其转换为常规集合并使用contains()方法。如果它是一个句子或短语等数组,你必须迭代它来告诉。
将捕获所有这些的最通用的解决方案是迭代如下。
for(String s : stringArray)
{
if(s.indexOf(word) > 0) return true;
}
return false;
这将查看数组中的每个字符串,并检查该单词是否包含在其中的任何位置。在第一次出现之后它将返回true。
答案 9 :(得分:0)
如果数组已排序,您可以使用Arrays.binarySearch查找数据。
像这样:
if (Arrays.binarySearch(stringArray, word)>=0) {
// word found in the array.
}
如果数组未排序,则为commons lang,使用ArrayUtils.indexOf方法。
最后,如果您正在搜索大型数组,那么使用来自JSR166的ParallelArray
进行并行搜索可能是值得的 - 来自Java SE 7并且现在可以下载。 This article给出了介绍。
答案 10 :(得分:0)
向我们提供有关您的问题的详细信息,以及您需要检查的内容。有几种不同的方法来做这样的事情。如果您需要继续询问项目A是否在集合B中,请将集合B设为HashSet,并且您可以非常快速地调用包含。您可以通过几种java-ish方式获得相同的效果,但它们会因您的数据等而异。