SQL/PL-SQL で使用される "IN" のようなキーワードが java にないのはなぜだろうと、私はしばらく考えていました。|| で醜いコードを書く代わりに、値を他のいくつかの値と一度に比較するのに役立つ非常に便利なキーワードです。または長い if-else! JSRでこの種の命題はありますか?
PS:回避策を探しているわけではありませんが、この機能がJavaに存在しない特定の理由があるかどうか、または近い将来の提案があるかどうかを知りたいと思いました
SQL/PL-SQL で使用される "IN" のようなキーワードが java にないのはなぜだろうと、私はしばらく考えていました。|| で醜いコードを書く代わりに、値を他のいくつかの値と一度に比較するのに役立つ非常に便利なキーワードです。または長い if-else! JSRでこの種の命題はありますか?
PS:回避策を探しているわけではありませんが、この機能がJavaに存在しない特定の理由があるかどうか、または近い将来の提案があるかどうかを知りたいと思いました
これを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"
Javaでは、コレクションを作成してメソッドを使用できますboolean contains(Object o)
。
そう思います、
その本当に欠けている機能です。
例えば:
String[] list = new String[]{"Tim","Tammy","Tod"};
if("Ted" in list){
System.out.println("Found!");
}
本当に理解しやすいでしょう。
私は次のようなことをします、
List<String> values = ArrayLists.create("AVALUE", "BVALUE");
if (values.contains(yourValue))
// Do whatever
java.util.Collection
メソッドがcontains
ありcontainsAll
、仕事を成し遂げるかもしれませんが、あなたの質問からはわかりません。
しかし、Java はデータベース (JDBC) に簡単に接続できます。for-eachコンストラクトがありますが、これは役に立ち、次のようになりますIN
。
for (Suit suit : suits)
for (Rank rank : ranks)
sortedDeck.add(new Card(suit, rank));