Comparator和Comparable的区别.docVIP

  • 3
  • 0
  • 约7.99千字
  • 约 8页
  • 2018-02-24 发布于河南
  • 举报
Comparator和Comparable的区别

 HYPERLINK /fastunit/archive/2008/04/08/191533.html Comparator 和Comparable在排序中的应用 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排 序。 一、Comparator 强行对某个对象collection进行整体排序的比较函数,可以将Comparator传递给Collections.sort或 Arrays.sort。 接口方法: ??/** ???*?@return?o1小于、等于或大于o2,分别返回负整数、零或正整数。 ???*/ ??int?compare(Object?o1,?Object?o2); 案例: import?java.util.Arrays; import?java.util.Comparator; public?class?SampleComparator?implements?Comparator?{ ??public?int?compare(Object?o1,?Object?o2)?{ ????return?toInt(o1)?-?toInt(o2); ??} ??private?int?toInt(Object?o)?{ ????String?str?=?(String)?o; ????str?=?str.replaceAll(一,?1); ????str?=?str.replaceAll(二,?2); ????str?=?str.replaceAll(三,?3); ????//? ????return?Integer.parseInt(str); ??} ??/** ???*?测试方法 ???*/ ??public?static?void?main(String[]?args)?{ ????String[]?array?=?new?String[]?{?一 二,?三,?二?}; ????Arrays.sort(array,?new?SampleComparator()); ????for?(int?i?=?0;?i??array.length;?i++)?{ ??????System.out.println(array[i]); ????} ??} } ?二、Comparable 强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表(和数组)可以通过Collections.sort或Arrays.sort进行 自动排序。 接口方法: ??/** ???*?@return?该对象小于、等于或大于指定对象o,分别返回负整数、零或正整数。? ???*/ ??int?compareTo(Object?o); 假设对象User,需要按年龄排序: public?class?User?{ ??private?String?id; ??private?int?age; ??public?User(String?id,?int?age)?{ ????this.id?=?id; ????this.age?=?age; ??} ??public?int?getAge()?{ ????return?age; ??} ??public?void?setAge(int?age)?{ ????this.age?=?age; ??} ??public?String?getId()?{ ????return?id; ??} ??public?void?setId(String?id)?{ ????this.id?=?id; ??} } 改造后的对象: import?java.util.Arrays; public?class?User?implements?Comparable?{ ??private?String?id; ??private?int?age; ??public?User(String?id,?int?age)?{ ????this.id?=?id; ????this.age?=?age; ??} ??public?int?getAge()?{ ????return?age; ??} ??public?void?setAge(int?age)?{ ????this.age?=?age; ??} ??public?String?getId()?{ ????return?id; ??} ??public?void?setId(String?id)?{ ????this.id?=?id; ??} ??public?int?compareTo(Object?o)?{ ????return?this.age?

文档评论(0)

1亿VIP精品文档

相关文档