値を含む「bob」という名前の配列があります。
String[] bob = { "this", "is", "a", "really", "silly", "list" };
「愚かな」値がbobという名前の配列に存在するかどうかを、反復せずに知るにはどうすればよいですか?
メソッドを使用できますList#contains
。そのためには、配列をリストに変換する必要があります。Arrays#asList()
次のような方法を使用できます。
String[] bob = { "this", "is", "a", "really", "silly", "list" };
if (Arrays.asList(bob).contains("silly")) {
// true
}
staticArrays.asList(T)
を使用して配列をリストに変換し、withList.contains(Object)
をチェックして、再調整されたコレクションにオブジェクトが存在するかどうかを確認します。
String[] bob = { "this", "is", "a", "really", "silly", "list" };
System.out.println(Arrays.asList(bob).contains("silly"));
ただし、従来の方法は、配列を反復処理し、equals()を使用して各要素をチェックすることです。
あなたがそれをたくさんチェックしようとしているなら、あなたはそれを使うことがより効率的であると思うかもしれませんHashSet
:
String[] bob = { "this", "is", "a", "really", "silly", "list" };
Set<String> silly = new HashSet<String>(Arrays.asList(bob));
boolean isSilly = silly.contains("silly");
これを行う簡単な方法は次のとおりです。
ArrayList list = new ArrayList(Arrays.asList(bob ));
if (list.contains("silly")) {
// my array has silly !
}
アイデアは、配列をListArrayオブジェクトに変換することです。ただし、余分なメモリを消費するため、使用する前にその価値があることを確認してください。
編集
パフォーマンスとメモリの節約を求めている場合は、代わりに二分探索アルゴリズムを使用できます。この方法では、新しいオブジェクトを割り当てる必要はありません。
Arrays.sort(array)
int value = Arrays.binarySearch(array, "silly");
if (value != -1) {
// my array has silly !
}
上記のコードは私には機能しません。プリミティブ型は許可されていないと思います。
手動で行う必要があります:
char[] charlist = {'a','b','c','d'}
boolean arraycontains = false;
char tester = 'c';
for (int y=0;y<charlist.length;y++){
if (charlist[y] == character) {
arraycontains = true;
break;
}
}
if (arraycontains) {
//true. array contains the tester;
}
else {
//false. array does not contain the tester;
}
:)