Does Java have a “IN” operator or function like SQL?
我想知道在Java中是否有这样做的方法:
1 2 3 | if(word in stringArray) { ... } |
我知道我可以为此做一个功能,但我只想知道Java是否已经有了这个功能。
谢谢您!
有很多收藏可以让你做类似的事情。例如:
使用
或与
1 2 | List<String> listOfStrings = new ArrayList<String>(); boolean hasString = listOfStrings.contains(something); |
然而,对于简单的
Java语言设计得既强大又简单。在语言层中没有Java这样的运算符,但是确实已经编写了库来促进这样的查询。
如果您想知道某个对象是否是某组对象的成员,那么应该使用——还有什么?--一个
您可以很容易地检查给定的字符串是否在
1 2 3 4 5 |
使用
您应该熟悉Java集合框架为您提供的数据结构。它们允许您编写惯用的、可维护的、灵活的代码,并由这些数据结构可用的许多强大算法支持。
也见- Java教程/集合框架
List 、Set 、Queue 、Map 、SortedMap 、NavigableSet 等。
- 有效Java第二版,项目25:喜欢列表到数组
在SQL中
1 | x in ('Alice', 'Bob', 'Carol') |
在Java中:
1 |
Java没有"in"运算符。
对于数组,您需要迭代它们并查找匹配的项。
对于列表,可以使用
可以为集合使用java. UTI.Cuff.Cub()。如果你有一个非空数组,你可以使用java. U.L.Studio.aslist(数组).Cube()。
没有数组:
1 2 3 4 5 6 7 | public static <T> boolean in(T value, T... list) { for (T item : list) { if (value.equals(item)) return true; } return false; } |
用途:
1 2 | int val = 1; assert in(val, 1,2,3,4); |
1 | tabs[j].indexOf("lelamondeestgrand...")!=0 |
它首先取决于数组是什么。如果它是一个精确单词数组,则可以将其转换为常规集合并使用contains()方法。如果它是一个句子或短语等的数组,则必须对其进行迭代以进行说明。
最通用的解决方案是如下迭代。
1 2 3 4 5 |
这将查看数组中的每个字符串,并检查该单词是否包含在其中的任何位置。它将在找到第一个事件后返回true。
1 2 3 4 | if(myArrayList.contains("hello")) { // yay } |
请详细说明您的问题和需要检查的内容。有几种不同的方法可以做这样的事情。如果您需要继续询问项目A是否在B组中。使set b成为哈希集,您可以调用contains非常快。您可以在几个Java ISH方式中得到相同的效果,但是它们会根据您的数据等而变化。
如果对数组进行排序,则可以使用array.binarysearch查找数据。
这样地:
1 2 3 |
如果数组未排序,则commons lang具有arrayutils.indexof方法。
最后,如果你正在搜索一个大的数组,那么并行搜索可能是值得的,使用EJOCX1,1,来自Java See 7中的JSR166,现在可以作为下载。本文作了介绍。