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

cod*_*dea 22 java function

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

if(word in stringArray) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

jjn*_*guy 21

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

Strings:

String s = "I can has cheezeburger?";
boolean hasCheese = s.contains("cheeze");
Run Code Online (Sandbox Code Playgroud)

或者Collections:

List<String> listOfStrings = new ArrayList<String>();
boolean hasString = listOfStrings.contains(something);
Run Code Online (Sandbox Code Playgroud)

但是,没有类似的简单构造String[].


pol*_*nts 13

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

如果你想知道某个对象是否是某些对象集的成员,那么你应该使用 - 还有什么?- a 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
Run Code Online (Sandbox Code Playgroud)

使用HashSet,contains是一个固定时间操作.这比通过数组的线性搜索要好得多.

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

也可以看看


小智 12

在SQL中

x in ('Alice', 'Bob', 'Carol')
Run Code Online (Sandbox Code Playgroud)

在Java中:

Arrays.asList("Alice", "Bob", "Carol").contains(x)
Run Code Online (Sandbox Code Playgroud)


kgi*_*kis 7

Java没有"in"运算符.

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

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

  • @Colin,二进制搜索仅在数组排序时有效. (2认同)