0

我一直想知道为什么 java 没有在 SQL/PL-SQL 中使用的任何关键字,如“IN”。这是一个非常有用的关键字,有助于一次将值与其他几个值进行比较,而不是用 || 编写丑陋的代码。或冗长的 if-else!JSR 中有这样的命题吗?

PS:我不是在寻找解决方法,但我想知道是否有任何特殊原因导致此功能在 java 中不存在或在不久的将来有任何建议

4

7 回答 7

1

我还没有看到任何将其添加到 Java 的坚定建议。有一篇博客文章(和一篇文章)讨论了添加列表文字的可能性,这将使您在大多数情况下使用contains()- 这似乎已经针对 Java 7 进行了讨论,但没有被采用。

更新:看起来列表文字已被推迟到 Java 8 - 例如,请参阅这篇文章

您可以使用 varargs 定义帮助程序,而不是使用contains()和直接使用数组文字或列表:

boolean in(Object o, Object... vals)
{
    return Arrays.asList(vals).contains(o);
}

这样你就可以做到:

if (in(x, "a", "b", "c"))
{
    // Do something
}

IN但与 SQL或 Python相比,这仍然有点丑陋和冗长:

if x in ['a','b','c']:
    print "yes"
于 2012-10-29T16:20:43.983 回答
0

我会做类似的事情,

List<String> values = ArrayLists.create("AVALUE", "BVALUE");

if (values.contains(yourValue))
// Do whatever
于 2012-10-29T16:21:49.583 回答
0

但是Java可以很容易地连接到数据库(JDBC)。您确实有一个for-each构造,尽管它很有帮助并且类似于IN

for (Suit suit : suits)
    for (Rank rank : ranks)
        sortedDeck.add(new Card(suit, rank));
于 2012-10-29T16:15:30.763 回答
0

在 Java 中,您可以创建一个集合并使用方法boolean contains(Object o)

于 2012-10-29T16:16:09.820 回答
0

在收藏中

Collection.contains(对象 obj)

在 String 你有String.contains(CharSequence c)

于 2012-10-29T16:16:13.203 回答
0

我认同,

这确实是一个缺失的功能。

例如:

String[] list = new String[]{"Tim","Tammy","Tod"};
if("Ted" in list){
    System.out.println("Found!");
}

真的很容易理解。

于 2012-10-29T16:18:26.697 回答
0

java.util.Collection有方法containscontainsAll可以完成工作,但很难从你的问题中分辨出来。

于 2012-10-29T16:15:11.347 回答