Java是否具有像SQL一样的“IN”运算符或函数?

我想知道在Java中是否有办法做这样的事情:

if(word in stringArray) { ... } 

我知道我可以为此创建一个函数,但我只是想知道Java是否已经有了这个function。

谢谢!

有许多集合可以让你做类似的事情。 例如:

使用Strings

 String s = "I can has cheezeburger?"; boolean hasCheese = s.contains("cheeze"); 

或与Collections

 List listOfStrings = new ArrayList(); boolean hasString = listOfStrings.contains(something); 

但是,对于简单的String[] ,没有类似的构造。

Java语言设计强大但也很简单。 Java语言级别没有这样的运算符,但是为了方便这样的查询,肯定编写了库。

如果你想知道某个对象是否是某些对象集的成员,那么你应该使用 – 还有什么?Set 。 这些数据结构自然允许这样的查询,更好的是,它们针对此类查询进行了优化

您可以像这样轻松检查给定字符串是否在Set

  String[] arr = { "Alice", "Bob", "Carol" }; Set names = new HashSet(Arrays.asList(arr)); System.out.println(names.contains("Alice")); // true System.out.println(names.contains("Dean")); // false 

使用HashSetcontains是一个常量操作。 这比通过数组的线性搜索要好得多。

您应该熟悉Java Collections Framework为您提供的数据结构。 它们允许您编写惯用,可维护,灵活的代码,并支持许多可用于这些数据结构的强大算法。

也可以看看

  • Java教程/集合框架
    • ListSetQueueMapSortedMapNavigableSet等。
  • Effective Java 2nd Edition,Item 25:首选列表到数组

在SQL中

 x in ('Alice', 'Bob', 'Carol') 

在Java中:

 Arrays.asList("Alice", "Bob", "Carol").contains(x) 

Java没有“in”运算符。

对于数组,您需要迭代它们并查找匹配项。

对于列表,您可以使用contains方法。

您可以将java.util.Collection.contains()用于集合。 如果你拥有的是非null数组,则可以使用java.util.Arrays.asList(array).contains()。

 tabs[j].indexOf("lelamondeestgrand...")!=0 

没有数组:

 public static  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); 
 if(myArrayList.contains("hello")) { // yay } 

它首先取决于数组是一个数组。 如果它是确切单词的数组,您可以将其转换为常规集合并使用contains()方法。 如果它是一个句子或短语等数组,你必须迭代它来告诉。

将捕获所有这些的最通用的解决方案是迭代如下。

 for(String s : stringArray) { if(s.indexOf(word) > 0) return true; } return false; 

这将查看数组中的每个字符串,并检查该单词是否包含在其中的任何位置。 在第一次出现之后它将返回true。

如果数组已排序,则可以使用Arrays.binarySearch查找数据。

喜欢这个:

  if (Arrays.binarySearch(stringArray, word)>=0) { // word found in the array. } 

如果数组未排序,则commons lang具有ArrayUtils.indexOf方法。

最后,如果您正在搜索大型数组,那么使用JSR166中的ParallelArray进行并行搜索可能是值得的 – 来自Java SE 7,现在可以下载。 本文介绍。

向我们提供有关您的问题的详细信息,以及您需要检查的内容。 有几种不同的方法来做这样的事情。 如果您需要继续询问项目A是否在集合B中,请将集合B设置为HashSet ,并且您可以非常快速地调用包含。 您可以通过几种java-ish方式获得相同的效果,但它们会因您的数据等而异。