当我尝试使用可比较的接口创建匿名内部时,我收到编译错误。//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); } });
3 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
排序可以通过比较两个实体来完成。
排序 Util 类
TreeSet
需要,Comparator
因为它有两个可以比较的参数。Comparable
没有足够的信息来比较其他元素。
问:现在你会问Sorting Item实现时是如何工作的Comparable
?
A : 在这种情况下,Sorting Item 是要与之比较的第一个 Item,其他元素被传递给它的方法 compareTo(String o)
眼眸繁星
TA贡献1873条经验 获得超9个赞
实际上,当我看到 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)
添加回答
举报
0/150
提交
取消