Comparable接口的实现和使用
2017-05-29 13:40
316 查看
强烈推荐(虽然不是必需的)使自然排序与 equals
一致。所谓与equals一致是指对于类 C 的每一个 e1 和 e2 来说,当且仅当 (e1.compareTo((Object)e2)
== 0) 与e1.equals((Object)e2) 具有相同的布尔值时,类 C 的自然排序才叫做与
equals 一致 。2.实现什么方法
int compareTo(T o) 比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。 强烈推荐 (x.compareTo(y)==0) == (x.equals(y)) 这种做法,但不是 严格要求这样做。一般来说,任何实现 Comparable 接口和违背此条件的类都应该清楚地指出这一事实。推荐如此阐述:“注意:此类具有与 equals 不一致的自然排序。” 参数: o - 要比较的对象。 返回:
负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。 抛出:
ClassCastException - 如果指定对象的类型不允许它与此对象进行比较。
import java.util.*;
public class EmployeeSortTest
{ public static void main(String[]
args) { // TODO
Auto-generated method stub
Employee[] staff
= new Employee[
3 ];
staff[ 0 ] = new Employee(
"harry Hacker" , 35000 );
staff[ 1 ] = new Employee(
"carl cracke" , 75000 );
staff[ 2 ] = new Employee(
"tony Tester" , 38000 );
Arrays.sort(staff); //sort方法可以实现对对象数组排序,但是必须实现 Comparable接口for (Employee
e: staff)
System.out.println( "id=" +e.getId()+ " name="
+e.getName()+ ".salary="
+e.getSalary());
} } class Employee implements Comparable { public Employee(String
n, double s)
{
name = n;
salary = s;
Random ID = new Random();
id = ID.nextInt( 10000000
);
} public int getId()
{ return id;
} public String
getName()
{ return name;
} public double getSalary()
{ return salary;
} public void raiseSalary( double byPercent)
{ double raise
= salary *byPercent/ 100 ;
salary+=raise;
} public int compareTo(Employee
other)
{ if (idreturn - 1
; if (id>other.id) return 1
; return 0
;
} private int id; private String
name; private double salary;
}
4.与Comparator的区别Comparator位于包java.util下,而Comparable位于包java.lang下,Comparable接口将比较代码嵌入自身类中,而后者在一个独立的类中实现比较。 如果类的设计师没有考虑到Compare的问题而没有实现Comparable接口,可以通过 Comparator来实现比较算法进行排序,并且为了使用不同的排序标准做准备,比如:升序、降序。
相关文章推荐
- 比较器的使用,实现 Comparable接口,功能:实现对象的多条件比较,排序
- 【Java学习笔记】Comparable接口的实现和使用
- Comparable接口的实现和使用
- 【Java学习笔记】Comparable接口的实现和使用
- 使用 Comparable 接口实现对象的属性排序
- Comparable接口的实现和使用
- TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式
- 父类实现IComparable<T>接口,子类无法使用~
- Comparable接口的实现和使用
- 【转载】Comparable接口的实现和使用
- Comparable接口实现和使用方法介绍
- Comparable接口的实现和使用
- Comparable接口的实现和使用
- Comparable接口的实现和使用
- 【Java学习笔记】Comparable接口的实现和使用
- Comparable接口实现和使用方法介绍
- (2.3.13)Comparable接口的实现和使用[ Collections.sort]
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- 【Java学习笔记】Comparable接口的实现和使用
- Comparable接口的实现和使用