标签:
它们都是Java的一个接口,都是用来实现集合中元素的比较、排序。
Comparable(可比较的)是在集合内部定义的方法实现的排序。对象的本身已经拥有比较大小的能力;
Comparator(比较器)是在集合外部实现的排序。对象的类结构不需要有任何变化,在比较的时候,除了传递对象外还需要将这个比较器传递过去;
Demo工程结构
Person.java
PersonComparator.java
TestComparable.java
TestComparator.java
两种方法各有优劣。
用Comparable简单,只要实现Comparable接口的对象,直接就成为一个可以比较的对象,但是需要修改源代码。
用Comparator的好处是不需要修改源代码,而是另外实现一个比较器,当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比较打消了,并且在Comparator里面用户可以自己实现复杂的可以通用的逻辑,使其可以匹配一些比较简单的对象,那样就可以节省很多重复劳动了。
标签:
原文地址:http://www.cnblogs.com/zhengbin/p/5792785.html