实现了Comparable接口的类在一个Collection(集合)里是可以排序的,而排序的规则是按照你实现的Comparable里的抽象方法compareTo(Object o) 方法来决定的。
compareTo方法在Object中并没有被声明,它是java.lang.Compareable接口中唯一的方法。一个类实现了Compareable接口,就表明它的实例具有内在的排序关系(natural ordering)。如果一个数组中的对象实现了Compareable接口,则对这个数组进行排序非常简单:Arrays.sort();对于存储在集合中的Comareable对象,搜索、计算极值以及自动维护工作都非常简单。一旦你的类实现了Compareable接口,它就可以跟许多泛型算法(generic algorithm)以及依赖于该接口的集合的操作实现进行协作,以小的努力得到强大的功能。
Java平台库中的所有值类(value classes)都实现了Compareable接口。
compareTo的约定是:
将当前这个对象与指定的对象进行顺序比较,当该对象小于、等于或大于指定对象时,分别返回一个负整数、0或正整数,如果无法进行比较,则抛出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<Employee>
{
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(id<other.id)//这里比较的是什么 sort方法实现的就是按照此比较的东西从小到大排列
return -1;
if(id>other.id)
return 1;
return 0;
}
private int id;
private String name;
private double salary;
}
分享到:
相关推荐
通过简单的例子初步了解Comparable和Comparator的使用,注释很详细
java通过Comparable接口实现字符串比较大小排序的简单实例
1.什么是Comparable接口 此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort ...
comparator接口与Comparable接口的区别
主要介绍了java 实现Comparable接口排序,升序、降序、倒叙,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Java8HashMap键与Comparable接口编程开发技术共3页.pdf.zip
【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip
下面小编就为大家带来一篇java中实现Comparable接口实现自定义排序的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。 此 接口只有一个方法...
本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧
本篇文章是对java比较器Comparable接口与Comaprator接口进行了详细的分析介绍,需要的朋友参考下
当且仅当要使用的对象实现Comparable接口时,我们也可以创建不带Comparator对象的SortedList。 用法 我们将像创建Java中的任何ArrayList一样创建SortedList: SortedList sortedlist = new SortedList(comparator); ...
大家好,我是Ziph!...好多同学或者读者认为感觉自己学到这里,不知道该从何写起,而我在探究Comparable接口底层原理的同时,写了详细的步骤1、2、3、4、5、6、7、8(一共8个步骤,按数字找有相应书写和想法
1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的, 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个...
总结一下: ArrayList:如果是查改多,用...一般是默认排序用自然排序(Comparable接口),特殊排序用定制排序(Comparetor接口实现) LinkedHashSet:如果需要元素不重复,并且,有存入和取出顺序要求用LinkedHashSet
北京市自学考试java上机实践考题总结,包含了常考的各种题型
Java类集框架 最大单值操作父接口Collection及其子接口、子类: List接口、ArrayList类、Vector类、栈操作类Stack、链表操作类LinkList、队列操作接口Queue、Set接口、...Comparable接口、equals()方法、hashCode()方法
文章目录简介ComparableComparator举个例子 java中Comparable和Comparator的区别 ...实际上Comparable接口只定义了一个方法: public int compareTo(T o); 实现这个接口的类都需要实现compareTo方法,表示两个
实现Comparable接口或Comparator接口,用户可以根据需要对集合中的元素进行排序。为了方便用户使用,Java平台还提供了Collections和Arrays工具类。collection.rar分别对上述内容进行详细讲解演示。