Java的List排序

开发工具与关键技术:MyEclipse 10、Java语法
作者:邓婵
撰写时间:2019年6 月 5日

集合和数组的不同点:
数组:只能存储固定大小同一类型的元素。数组元素可以是基本数据类型的值,也可以是对象。
集合:可用于存储数量不等的对象,并可以实现常用的数据结构。还可以保存具有映射关系的关联数组。而集合只能保存对象。
Collection和map属于同一系统集合,list接口和set接口继承Collection接口。List接口是有序可以存放重复数据的。

一、List中的Comparable排序:
Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。
例子:
Java的List排序_第1张图片
Java的List排序_第2张图片
说明:Comparable相当于“内部比较器”,首先要创建对象实现它的接口,然后根据自己定义的类来排序,根据Comparable排序接口里面的方法compareTo改变排序方法,排序方法有从小到大 :this.成员变量-o.成员变量,从大到小:o.成员变量-this.成员变量,再把数据添加完后通过Collections工具类里面sort排序的方法进行排序,最后遍历数据列表,输出列表数据。

这里根据年龄从小到大排序,如果年龄相同则根据姓名进行排序。输出结果如图下所示:
Java的List排序_第3张图片
二、List中的Comparator排序:
Comparator是比较接口。我们可以通过实现Comparator来新建一个比较器,然后通过这个比较器对类进行排序。 例子:
Java的List排序_第4张图片
Java的List排序_第5张图片
说明:Comparator相当于“外部比较器”,首先创建对象,把数据添加完后通过Collections工具类里面sort排序的方法传进Comparator进行排序,然后自定义它的排序,排序方法有从小到大 o1.成员变量-o2.成员变量,从大到小 o2.成员变量-o1.成员变量,最后遍历数据列表,输出列表数据。

这里根据年龄从小到大排序,如果年龄相同则根据姓名进行排序。输出结果如图下所示:
Java的List排序_第6张图片
其实这两种排序方法输出的效果是一样的,不同的就是Comparable排序需要改原来那个类,在那个类实现接口。而Comparator排序只需要在外部写进去就可以了,就不需要动原来那个类。

你可能感兴趣的:(Java的List排序)