为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Comparable 接口的匿名内部类

使用 Comparable 接口的匿名内部类

阿晨1998 2021-10-28 17:06:27
当我尝试使用可比较的接口创建匿名内部时,我收到编译错误。//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个赞

  1. 排序可以通过比较两个实体来完成。

  2. 排序 Util 类TreeSet需要,Comparator因为它有两个可以比较的参数。

  3. Comparable 没有足够的信息来比较其他元素。


问:现在你会问Sorting Item实现时是如何工作的Comparable

A : 在这种情况下,Sorting Item 是要与之比较的第一个 Item,其他元素被传递给它的方法 compareTo(String o)


查看完整回答
反对 回复 2021-10-28
?
眼眸繁星

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)


查看完整回答
反对 回复 2021-10-28
  • 3 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信