本帖最后由 武庆东 于 2012-9-17 22:50 编辑
1:让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法。
也种方式也成为元素的自然顺序,或者叫做默认顺序。
class Student implements Comparable//该接口强制让学生类具备比较性
{ Student()
{}
public int compareTo(Object obj)
{}
}
2:当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。
在集合初始化时,就有了比较方式。
这时就需要定义一个比较器类去实现Comparator,并重写compare方法。
class MyCompare implements Comparator //自定义比较器,使集合具备比较性
{ public int compare(Object o1,Object o2)
{}
}
在定义集合时,需要根据实际情况选择排序方式,一.treeset为例:
1、TreeSet ts =new TreeSet(); //此时的排序方式为第一种,即元素的自然排序方式。
2、TreeSet ts =new TreeSet(new MyCompare()); //此时的排序方式为第二种,即集合自身具备比较性。
综述:Comparator位于java.util下,Comparable则位于java.lang下
Comparable是一个对象本身就已经支持自比较的接口(如Sring、integer均可完成比较大小操作,已经实现了Comparable接口)
comparator是一个专用的比较器,当这个对象自比较或者自比较函数不能满足需求时,可以写一个比较器来完成两个对象之间大小的比较
至于你说的要乘以一个质数,最好吧代码贴来,希望可以为你解答!
|