37

この質問にはすでに答えがあります。

{"tube"、 "are"、 "fun"}で埋められた配列があるとしましょう。それからJTextFieldがあります。コマンドが見つかりません"。

私はJavaのドキュメントを見てみましたが、私が得ているのは私が質問やものが好きではないということです...だから、これはどのように行われますか? 「配列内」関数があることは知っていますが、この2つを組み合わせることはあまり得意ではありません。

ありがとう。

これが私がこれまでに持っているものです:

String[] dan = {"Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue"};
boolean contains = dan.contains(say.getText());

しかし、私はdan.containsにシンボルが見つからないようになっています

5 답변


62

これはあなたが探しているものです:

List<String> dan = Arrays.asList("Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue");

boolean contains = dan.contains(say.getText());

のリストがある場合繰り返さない値、を使用することを好むSet<String>どれが同じ含む方法


  • うん!私の例を見てください。 :D - nn2
  • これは配列が集合ではないためです - Pablo Fernandez
  • @Dan - BZZZT - あなたが起動しようとしていますcontains配列ではなく、Set!!! - Stephen C
  • ありがとうSIMPSO-私はPABLOを意味します! :D Tahnksスティーブン。ルーキーの間違い。 - nn2

31

String[] a= {"tube", "are", "fun"};
Arrays.asList(a).contains("any");


  • ありがとう…すばらしい例 - Antonio
  • これが私が探していたものです。シンプル! - ether_joe

7

つかいますArrays.asList()で配列をラップするList<String>これはcontains()方法:

Arrays.asList(dan).contains(say.getText())


3

これはJava 8でStreamを使って行うことができます。

import java.util.stream.Stream;

String[] stringList = {"Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue"};

boolean contains = Stream.of(stringList).anyMatch(x -> x.equals(say.getText());


  • これが最良の答えです。他は失敗するasListパラメータ化されていないジェネリックを返します。 - John Henckel

1

配列内の値をソート順に整理できる場合は、次のようにします。Arrays.binarySearch()。それ以外の場合は、ループを作成して線形検索を行う必要があります。配列内に大きな(数十を超える)文字列を配置する予定の場合は、代わりにSetを使用することを検討してください。


  • Erm、配列が永続的で順序がまったく変更されないと言った場合は問題になりませんか。より簡単な方法はありますか? - nn2
  • @ダン - 私は彼の最初の文がそれに答えていると思います。手で文字列を並べ替える方法は知っていますか。 - Stephen C
  • @ジム、この答えは間違っています。のドキュメント#binarySearch"配列に相互に比較できない要素(文字列や整数など)が含まれている場合、その要素の自然順序付けに従って並べ替えることはできないため、結果は未定義になります。しないつかいますbinarySearchIntegerまたはString、またはせいぜい半順序を持つことができる任意の要素。 - Aleksandar Dimitrov

リンクされた質問


関連する質問

最近の質問