对象排序

Comparable与Comparator的区别

时光怂恿深爱的人放手 提交于 2019-12-01 12:19:12
前几天在项目中遇到了一个将复杂对象进行排序的问题:计算BingMap地图上距离 当前位置5KM内 发生事故(TrafficIncident)的点到当前位置的距离,并按距离升序排序。距离都算出来了,但这些TrafficIncident对象的排序却难到了我。经同事提醒,Comparable或Comparator是一个不错的选择。于是在网上搜索了一些资料,总结下来。 方式一: 实现Comparable接口 Comparable是java.lang包下的一个接口,该接口里只有一个compareTo()方法: package java.lang; import java.util.*; public interface Comparable<T> { public int compareTo(T o); } Comparable翻译为“可比较的”,表明实现该接口的类都是可以比较的,即实现Comparable接口的类本身就已经支持自比较,例如: String、Integer 自己就可以完成比较大小操作,它们已经实现了Comparable接口。查看String类的源码可以看见是这样声明的(JDK1.7): public final class String implements java.io.Serializable, Comparable<String>, CharSequence