java8 Comparator比較器的使用
//下面做一個排序的例子,來講解Collection中的sort
List<String> names = Arrays.asList("zhangsan", "lisi", "wangwu");
/*Collections.sort(names, new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);//倒敘
}
});
System.out.println("names = [" + names + "]");*/
//用JDK8中Limbda的寫法,
/*Collections.sort(names, (String o1, String o2) -> {
return o2.compareTo(o1);//倒敘
});
System.out.println("names2 = [" + names + "]");*/
//其實因爲JVM會根據names裏面都是String類型,推斷出o1,o2的類型,所以可以省列
/*Collections.sort(names, (o1, o2) -> {
return o2.compareTo(o1);//倒敘
});
System.out.println("names2 = [" + names + "]");*/
/*Collections.sort(names, (o1, o2) -> o2.compareTo(o1));
System.out.println("names2 = [" + names + "]");*/
//更加符合Java8新特性的的寫法是:
Collections.sort(names, Comparator.reverseOrder());
System.out.println("names3 = [" + names + "]");
//在這裏我們看到body只有一條語句的時候可以寫成o2.compareTo(o1),不需要括號,不需要return,我們稱之爲expression
//還有一種statement 則必須寫全:{return o2.compareTo(o1);}