1
String isoArray[] = {"020","784","004","028"};

if(!("020".equals(element[2]) || "784".equals(element[2]) || "004".equals(element[2]) || "028".equals(element[2]))){
            country a = new country(element[4], element[5], element[7]);
            countries.add(a);
}

ループを使用せずにこれらの文字列を比較する簡単な方法はありますか?

4

5 に答える 5

12

以下のコードを試してください。

if (Arrays.asList(isoArray).contains("YOUR_STRING"))
于 2013-02-08T03:39:04.057 に答える
0

使用したいタイプがセットのようです

Set<String> mySet = new HashSet<String>();
mySet.add("020");
mySet.add("784");
mySet.add("004");
mySet.add("028");

if(!mySet.contains(element[2])){
    country a = new country(element[4], element[5], element[7]);
    countries.add(a);
}
  • HashSetハッシュを使用して値を検索します。
  • TreeSet二分木検索を行います。
于 2013-02-08T04:14:13.523 に答える
0

element[2]私の友人、あなたの例から、あなたは値の配列に含まれているかどうかを確認しようとしているように見えます。contains@Realが言ったように、リストの述語を使用できるように、配列をリストに変換できます。何だと思いますか?述語はcontains単なるループです。

私は、このような不必要な何度も変換を含むコードを軽蔑します。ごみを発生させます。Nこれは、データのサイズが大きく、会社が公開されてデータのサイズが大きくなった5年後に消滅するため、今日は正常に実行されるコードです100000 * N。それで死なないでください。

したがって、選択は明白です。ArrayList単一の変換でを使用して、最初から配列を保持できます。

ArrayList<String> isoArray = Arrays.asList(new String [] {"020", "784", "004", "028"});

...

    if (!isoArray.contains(element[2])) {
        country a = new country(element[4], element[5], element[7]);
        countries.add(a);
    }

または、ベア配列で機能する独自のcontainsメソッドを実装できます。

static public boolean contains(Object [] a, Object item) {
    for (Object aItem : a) if (item.equals(aItem)) return true;
    return false;
}

このようなユーティリティ関数を、(tada!)のようなクラス(ほとんどが静的関数)に統合する必要がありますUtility。ちなみに、これが良い主が私たちにループと機能を与えた理由です。今、

String isoArray[] = {"020", "784", "004", "028"};

...

    if (!contains(isoArray, element[2])) {
        country a = new country(element[4], element[5], element[7]);
        countries.add(a);
    }

そして、すべてが世界で正しいです...

値のテーブルをソートされた順序で配置できる場合は、別の方法がありArraysます。バイナリ検索ルーチンを使用します。

String isoArray[] = {"004", "020", "028", "784"};

...

    if (Arrays.binarySearch(isoArray, element[2]) >= 0) {
        country a = new country(element[4], element[5], element[7]);
        countries.add(a);
    }
于 2013-02-08T04:16:09.707 に答える
0

Java 7 を使用している場合は、文字列定数でも switch-case を使用できます。

于 2013-02-08T03:39:18.917 に答える
0

問題の背景を知らなければ、答えを出すのは困難です。

配列を比較/検索/整理する最も一般的な方法 (そして広く教えられている方法) は、ループを使用することです。そのような解決策の 1 つに、バブル ソート alg タイプのループがあります。

for(int x = 0; x < array1.size(); x++){
   for(int y = 0; y < array2.size(); y++){
       if(array1[x].compare(array2[y]==0)
           Then they are equal 
       else
           They are not equal
    }
}

これは、複数の配列で単純なことを行う最も速い方法です。

于 2013-02-08T03:40:45.553 に答える