Fork me on GitHub

Comparator与Comparable的异同

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

  Comparator位于java.util下;

  Comparable位于java.lang下;

 

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

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

举个栗子🌰

  Demo工程结构

  Person.java

  PersonComparator.java

  TestComparable.java

  TestComparator.java

总结

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

posted @ 2016-08-21 15:07  郑斌blog  阅读(480)  评论(4)    收藏  举报