0

これは私の質問のポイントを示す単純なコードです。これよりも効果的な配列の実装があるかどうかはわかりません。私にとって非常に不快なのはif()、要素ごとに条件をブロックに記述しなければならないことです。これにより、コードがはるかに長くなります.特定の配列のすべての要素を1行に含める方法はありますか? ありがとうございました!

public class test{
  static String[] text;

public static void main(String args[]){
     text=new String[5];
     text[0]="hello";
     ...
     text[4]="bye";

     if(text[0].contains("something")==true||...text[4].contains("something")==true)
          //do something     
  }
}
4

3 に答える 3

4

ループを使用します。

for (String item: text) {
    if (item.contains("something")) {
       // TODO condition
    }
}

... または、次のような醜い回避策を使用します。

if (Arrays.toString(text).contains("something")) {
    // TODO condition
}
于 2013-08-09T18:39:08.273 に答える
2

それを行う独自のメソッドを作成できます。

public static anyContain(String[] array, CharSequence sub) {
    for (String s : array)
        if (s.contains(sub))
            return true;

    return false;
}

次に、ifステートメントは次のようになります

if (anyContain(text, "something")) {
    ...
}
于 2013-08-09T18:41:01.730 に答える
0

これが最良の方法だと思います(要素が完全に等しい場合のみ):

text=new String[5];
...
if (Arrays.asList(text).contains("something")) {
  // you code here
}

テストが必要な場合は、次のcontainsこともできます。

String[] test = new String[] {"one", "two", "something", "three"};
Arrays.sort(test);
int index = Arrays.binarySearch(test, "something", new Comparator<String>() {
  @Override
  public int compare(String o1, String o2) {
    return o1.contains(o2) ? 0 : -1;
  }
});

その結果、配列内の要素のインデックスも取得します。または、見つからない場合は負の値。

于 2013-08-09T18:53:57.183 に答える