假设我有一个对象的集合:
哪种方法更好:
1:归并排序然后二分查找
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;
}
}
针对需要搜索的集合大小,是否应该有不同的搜索方法?如果是,则如何决定。
编辑1:假设我需要多次搜索列表,并且列表中不会添加新元素。
编辑2:我本可以选择HashSet
,但实际上我正在使用List<CustomObject>
,并且可以根据CustomObject的不同属性多次搜索List
。所以我不能在我的CustomObject中重写equals
方法。