代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Sort {
public static void main(String[] args) {
// Random r = new Random();
// int[] data = new int[40000000];
// for(int i = 0 ; i < data.length ; i++){
// data[i] = r.nextInt(100000000);
// }
int[] data={1,2,3,4,5,6,7,8,9,10};
System.out.println(findMax1(data));
System.out.println(findMax2(data));
}
static int findMax1(int[] data){
long t1 = System.nanoTime();
int max = data[0];
for(int i = 1 ; i < data.length ; i++){
if (data[i] > max) max = data[i];
}
long t2 = System.nanoTime();
System.out.println(t2-t1 +" data");
return max;
}
static int findMax2(int[] data){
List<Integer> list = new ArrayList<>();
for (int i : data) {
list.add(i);
}
System.out.print(list);
System.out.println();
long t1 = System.nanoTime();
Integer max = Collections.max(list);
long t2 = System.nanoTime();
System.out.println(t2-t1+ " Collections");
return max;
}
}
执行结果
可见Collections.max方法速度并不快
max源码
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {
Iterator<? extends T> i = coll.iterator();
T candidate = i.next();
while (i.hasNext()) {
T next = i.next();
if (next.compareTo(candidate) > 0)
candidate = next;
}
return candidate;
}
底层还是实现Comparab接口,并且实现compareTo方法。