给你个comPareto的例子 import java.util.*; class JiangXu implements Comparator<Integer>{ //Implement the compare() method so that it //reverses the order of the integer comparison. public int compare(Integer A,Integer B){ return B.compareTo(A); //return A-B; //return 0; } }
public class PaiXu2 { public static void main(String[] args) { new PaiXu2().zou(); } public void zou() { Integer ZhengShu[] = {2,5,7,8,6,3,18,6}; JiangXu FanGuoLai=new JiangXu();
Arrays.sort(ZhengShu,FanGuoLai); for(int i = 0; i < ZhengShu.length; i++) { System.out.println(ZhengShu[i]); } } }
楼主【xoxong】截止到2008-06-30 22:55:45的历史汇总数据(不包括此帖):
发帖数:0 发帖分:0
结贴数:0 结贴分:0
未结数:0 未结分:0
结贴率:-------------------结分率:-------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
当你继承comparablede,复写compareTo的时候,代码完全由你定制.
它和equals是完全不相关的!
set里面不允许重复 所以你要重写equals()和hashCode()方法
equals比较两个对象的值是否相等,返回的是true or false
compareTo也是比较两个值的大小,相等返回0,前者小返回-1,前者大返回1。
再有就是==比较两个对象的地址是否相等,返回的也是true or false
compareTo方法相等的规则你来作主,可以认为姓名相同就是同一个对像.就不能放到SET里.
1>我们有些集合类会自动对里面的元素进行排序,如:TreeSet,TreeMap等
2>那么,集合如何知道你放如其中的类应该按什么顺序排序呢?
3>这里就要用到接口Comparable了,放入自动排序的集合的类要实现其中的CompareTo()方法,这样一来
集合就知道如何对你放入的类(可能是你自己定义的类,这个时候是一定要实现Comparable)进行排序了
4>如果类没有实现Comparable,那么,在初始化自动排序的集合的时候,我们也可以用Comparator接口来进行指定排序.几个概念:
1>自然排序:实现Comparable,进行排序的方法
2>比较器:实现了Comparator的类,可对特定的类进行排序另:在使用集合的时候,很多时候,我们应该让自然排序与equals()的行为一致(并没有强制规定一定要),比如
BigDecimal就没有一致.(API中有说明),但是,如果类的自然排序与equals()的行为不一致时,在使用有序
集合的时候就应该小心了,因为,可能会产生无法预料的结果.
另:在使用Set的时候,集合内所有的类都一定要重写了equals()(因为.Set不能重复,它用的就是equals()来判断的)注:以上在API中都有说明
import java.util.*; class JiangXu implements Comparator<Integer>{
//Implement the compare() method so that it
//reverses the order of the integer comparison.
public int compare(Integer A,Integer B){
return B.compareTo(A);
//return A-B;
//return 0;
}
}
public class PaiXu2
{
public static void main(String[] args)
{
new PaiXu2().zou();
}
public void zou()
{
Integer ZhengShu[] = {2,5,7,8,6,3,18,6};
JiangXu FanGuoLai=new JiangXu();
Arrays.sort(ZhengShu,FanGuoLai);
for(int i = 0; i < ZhengShu.length; i++)
{
System.out.println(ZhengShu[i]);
}
}
}
如果你使用的集合有自动排序,则需要实现compareTo,如TreeSet,TreeMap
如果你使用的集合有哈希索引,则需要实现hashcode,如HashMap,LinkedHashMap,HashSet