I tried to demonstrate the difference between List.contains()
and manually searching execution times the result is awesome. Here is the code,
public static void main(String argv[]) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("a");
list.add("a");
list.add("a");
list.add("a");
list.add("a");
list.add("b");
long startTime = System.nanoTime();
list.contains("b");
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.println("First run: "+duration);
startTime = System.nanoTime();
for(String s: list){
if(s.equals("b"))
break;
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("Second run: "+duration);
}
Output:
- First run: 7500
Second run: 158685
how contains() function makes such a big difference?
which search algorithm does it use?
if list conatins the searched element, does it terminate searching at first element?