猿问

使用 Comparable 接口的匿名内部类

当我尝试使用可比较的接口创建匿名内部时,我收到编译错误。


//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);


        }

    });


阿晨1998
浏览 166回答 3
3回答

素胚勾勒不出你

排序可以通过比较两个实体来完成。排序 Util 类TreeSet需要,Comparator因为它有两个可以比较的参数。Comparable&nbsp;没有足够的信息来比较其他元素。问:现在你会问Sorting Item实现时是如何工作的Comparable?A : 在这种情况下,Sorting Item 是要与之比较的第一个 Item,其他元素被传递给它的方法&nbsp;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)
随时随地看视频慕课网APP

相关分类

Java
我要回答