オブジェクトのコレクションがあるとします:
List<String> myList = populateMyArrayList();
//Here I am having an ArrayList with 1000 elements
どちらがより良いアプローチですか:
1 : マージソートしてから二分探索
Collections.sort(myList);
int keyIndex = Collections.binarySearch(myList, key);
2 : 順次検索
for(String s : myList){
if(s.equals(key)){
return s;
}
}
検索するコレクションのサイズに基づいて、検索アプローチに違いがあるはずですか? はいの場合、どのように決定するか。
EDIT1:リストを数回検索する必要があり、リストに新しい要素が追加されないとします。
EDIT2:を選択することもできましたがHashSet
、実際には を使用しており、CustomObject のさまざまな属性に基づいList<CustomObject>
て複数回検索できます。したがって、CustomObject にList
オーバーライドされたメソッドを含めることはできませんequals