Comparable接口和Comparator接口的简单比较

mac2026-05-14  5

为对象作比较有两种方式: 一个是 Comparable方法, 一种是Comparator比较器实现

一. Comparable接口

       Comparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些 类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较,则依赖compareTo方法的实现

compareTo方法也被称为自然比较方法, 返回值是 int

       该方法返回 < 0 比较者小于被比较者(即o指向的对象)

       该方法返回 == 0 比较者=被比较者

       该方法返回 > 0 比较者大于被比较者(即o指向的对象比较小)

二. Comparator接口

      Comparator<E> 是一个外比较器

      Comparator 接口里面有一个compare方法,方法有两个参数o1和o2, 是泛型的表示方式,分别表示待比较的两个对象, 方法返回值和Comparable接口一样是int, 有三种情况:

      若o1<o2,返回一个负整数;

      若o1==o2返回0;

      若o1>o2,返回一个正整数

三. Comparable 和Comparator 的区别

Comparable 是一个内比较器, 和类关联在一起的,是类本身自带的一种自然比较方法

Comparator 是一个外比较器,可以用于两个对象作比较,但是它比较灵活,可以脱离类的实现而存在的对象的比较.

有以下两种情况都可以实现Comparator接口: 一是类没有实现Comparable接口, 二是类实现了Comparable接口, 但是开发者认为CompareTo方法中的比较方式不是自己想要的那种比较方式, 因此可以实现Comparator接口,自己定义一个比较器进行比较

 

 

 

 

 

 

最新回复(0)