它们都是Java的一个接口,都是用来实现集合中元素的比较、排序。

  Comparator位于java.util下;

  Comparable位于java.lang下;

 

  Comparable(可比较的)是在集合内部定义的方法实现的排序。对象的本身已经拥有比较大小的能力;

  Comparator(比较器)是在集合外部实现的排序。对象的类结构不需要有任何变化,在比较的时候,除了传递对象外还需要将这个比较器传递过去;

举个栗子????

  Demo工程结构

Comparator与Comparable的异同

  Person.java

Comparator与Comparable的异同

  PersonComparator.java

Comparator与Comparable的异同

  TestComparable.java

Comparator与Comparable的异同

  TestComparator.java

Comparator与Comparable的异同

总结

  两种方法各有优劣。
  用Comparable简单,只要实现Comparable接口的对象,直接就成为一个可以比较的对象,但是需要修改源代码。
  用Comparator的好处是不需要修改源代码,而是另外实现一个比较器,当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比较大小了,并且在Comparator里面用户可以自己实现复杂的可以通用的逻辑,使其可以匹配一些比较简单的对象,那样就可以节省很多重复劳动了。

相关文章: