java学习笔记:利用TreeSet排序时Comparator接口和Comparable接口

来源:互联网 发布:免费书籍阅读软件 编辑:程序博客网 时间:2024/05/18 00:07


在Comparable接口中定义了compareTo方法:

public interface Comparable<T>{int compareTo(T other);}

在Comparator接口中,同样定义了compare方法:

public interface Comparator<T>{int compare(T a,T b);}

两种接口中的比较方法都分别返回负整数、0、正整数。

把元素插入TreeSet时,TreeSet默认实现Comparable接口中的compareTo方法进行排序,因此,可以通过重写comepareTo()方法控件TreeSet的排序方法。除此之外,通过实现Comparator接口,重写compare()方法可以实现同样功能。

 

以学生成绩排序为例子,以TreeSet存放学生信息,根据成绩自动排序。

但是,根据实际情况,当出现两个学生成绩相同时,TreeSet只保留了其中一个学生,而另一个学生的信息由丢失了,因此,在重写compare() 和compareTo()时要注意。完整代码如下:

1、Comparator接口

2、Comparable接口

两者比较,Comparable接口有一定局限,每个方法只能实现一次接口,当需求改变,如按年龄排序时,要回到Student类中修改CompareTo()方法,违背面向对象思想



0 0
原创粉丝点击