下面是使用lambda表達式作爲sort()
方法的參數的java程序。lambda表達式實際上是在實現java接口下的引擎嗎?
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Dummy {
public static void main(String[] args) {
List<String> a1 = new ArrayList<String>();
a1.add("Zara");
a1.add("Mahnaz");
a1.add("Ayan");
Collections.sort(a1,
(p1, p2) -> p1.compareTo(p2)
);
System.out.println(a1.toString());
} //end main
}
使用Eclipse,當我說F3
上sort()
方法,控制再次實際上是要在Java 7的版本中使用相同的方法sort()
簽名(definiton)。
@SuppressWarnings({"unchecked", "rawtypes"})
public static <T> void sort(List<T> list, Comparator<? super T> c) {
//whatever
}
在我的代碼,有沒有第二個參數的sort()
方法的語法實際上相當於實施interface Comparator<T>
,引擎蓋下?像
class ComparePersonsbyName implements Comparator<String>{
public int compareTo(String p1, String p2){
return p1.compareTo(p2);
}
}
Collections.sort(a1, new ComparePersonsbyName());
@SkinnyJ我可以說:Collections.sort(A1,(P1,P2) - > p1.compareTo(P2));'執行快速排序並行核心上的算法(當前算法)?因爲lambda表達式語法啓用了這種並行性 – overexchange
您沒有看到與Java 7相同的定義。您發佈的Java 8實現代表['List.sort'](http://docs.oracle.com/javase/ 8/docs/api/java/util/List.html#sort-java.util.Comparator-)在Java 7中不存在。但是,此實現細節與lambda無關。 – Holger
@Holger在jdk 1.6代碼'../java/util/Consumer.java'中,我看到沒有註釋的'sort()'的defi。 – overexchange