0

SQL/PL-SQL で使用される "IN" のようなキーワードが java にないのはなぜだろうと、私はしばらく考えていました。|| で醜いコードを書く代わりに、値を他のいくつかの値と一度に比較するのに役立つ非常に便利なキーワードです。または長い if-else! JSRでこの種の命題はありますか?

PS:回避策を探しているわけではありませんが、この機能がJavaに存在しない特定の理由があるかどうか、または近い将来の提案があるかどうかを知りたいと思いました

4

7 に答える 7

1

これをJavaに追加するという確固たる提案は見たことがありません。リストリテラルを追加する可能性について議論しているブログ投稿(および別のcontains()) があります。これにより、ほとんどの方法で使用できるようになります。これは、Java 7 で議論されているようですが、採用されていないようです。

更新:リスト リテラルは Java 8 まで延期されたようです。たとえば、この記事を参照してください。

配列リテラルまたはリストを使用して指示するのではなく、contains()varargs を使用してヘルパーを定義できます。

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

Javaでは、コレクションを作成してメソッドを使用できますboolean contains(Object o)

于 2012-10-29T16:16:09.820 に答える
0

コレクションで

Collection.contains(Object obj)

文字列には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

私は次のようなことをします、

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

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

java.util.CollectionメソッドがcontainsありcontainsAll、仕事を成し遂げるかもしれませんが、あなたの質問からはわかりません。

于 2012-10-29T16:15:11.347 に答える
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 に答える