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);
}