[英]Anonymous inner class using Comparable interface
當我嘗試使用可比接口創建匿名內部時,出現編譯錯誤。
//Code trying to create treeset using comparable
// compilation error
TreeSet<String> treeSet5 = new TreeSet<String>(new Comparable<String>() {
@Override
public int compareTo(String o) {
// TODO Auto-generated method stub
return 0;
}
});
// CE:The constructor TreeSet<String>(new Comparable<String>(){}) is undefined
我知道對於自定義排序,我們需要使用比較器,但是我很好奇為什么我們不能創建可比較的匿名類。
//Custom sorting: default sorting as String implements comparable
// below code is fine as its working as expected.
TreeSet<String> treeSet2 = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
});
可比用於創建可以與自己進行比較的類。
比較器將與未實現Comparable的類一起使用(無論出於何種原因,例如,來自第三方),或者您要與原始的compareTo()方法進行比較而不比較它們而不繼承它們。
希望對您有意義。
這是精心制作的示例: https : //www.geeksforgeeks.org/comparable-vs-comparator-in-java/
TreeSet
類的Util類進行排序需要Comparator
因為它具有兩個可以比較的參數。 Comparable
沒有足夠的信息來與其他元素進行比較。 問:現在,您將問當Sorting Item實現Comparable
時它如何工作?
答:在這種情況下,排序項目是要與之進行比較的第一個項目,其他元素傳遞給其方法compareTo(String o)
實際上,一旦我看到TreeSet API,我就會在下面意識到。
上面的錯誤是因為TreeSet不接受Comparable接口作為構造函數參數,它只接受帶有實現的Comparator接口。
Treeset treeSet=new TreeSet();
//Creates empty tree set. All objects are inserted according to natural sorting order.
Treeset treeSet=new TreeSet(Comparator c);
//Creates empty treeSet object, objects are maintained according to defined Comparator.
TreeSet treeSet = new TreeSet(Collection c)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.