有些集合类会自动对里面的元素进行排序,如:TreeSet,TreeMap等
那么,集合如何知道你放如其中的类应该按什么顺序排序呢?
这里就要用到接口Comparable了,放入自动排序的集合的类要实现其中的CompareTo()方法,这样一来
集合就知道如何对你放入的类(可能是你自己定义的类,这个时候是一定要实现Comparable)进行排序了
如果类没有实现Comparable,那么,在初始化自动排序的集合的时候,我们也可以用Comparator接口来进行指定排序.
1>自然排序:实现Comparable,进行排序的方法
2>比较器:实现了Comparator的类,可对特定的类进行排序
在使用集合的时候,很多时候,我们应该让自然排序与equals()的行为一致(并没有强制规定一定要),比如 BigDecimal就没有一致.(API中有说明),但是,如果类的自然排序与equals()的行为不一致时,在使用有序集合的时候就应该小心了,因为,可能会产生无法预料的结果.
在使用Set的时候,集合内所有的类都一定要重写了equals()(因为.Set不能重复,它用的就是equals()来判断的)