使用自然排序需要类实现 Comparable,并且在内部重写 comparaTo 方法。
而 Comparator 则是在外部制定排序规则,然后作为排序策略参数传递给某些类,比如 Collections.sort(), Arrays.sort(), 或者一些内部有序的集合(比如 SortedSet,SortedMap 等)。
使用方式主要分三步:
-
创建一个 Comparator 接口的实现类,并赋值给一个对象
- 在 compare 方法中针对自定义类写排序规则
-
将 Comparator 对象作为参数传递给 排序类的某个方法
-
向排序类中添加 compare 方法中使用的自定义类
总结
- Comparable 自然排序。(实体类实现)
- Comparator 是定制排序。(无法修改实体类时,直接在调用方创建)
comparable接口实际上是出自java.lang包 它有一个compareTo(Object obj)方法用来排序comparator接口实际上是出自 java.util 包它有一个compare(Object obj1, Object obj2)方法用来排序