`

Comparable接口

    博客分类:
  • Java
阅读更多
    实现了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使用示例

    Comparable 接口和 Comparator 使用示例 在 Java 编程语言中,比较和排序是非常常见的操作。Comparable 接口和 Comparator 是两种常用的比较和排序方式。在本文中,我们将通过实例代码,详细介绍 Comparable 接口和...

    comparator接口与Comparable接口的区别

    Comparator接口与Comparable接口的区别 Comparator接口与Comparable接口是Java语言中两个重要的接口,它们都是用于比较和排序自定义类的对象的大小的。虽然它们两个都是用于比较的接口,但是它们有着不同的实现方式...

    Comparable接口实现字符串比较大小排序的简单实例

    java通过Comparable接口实现字符串比较大小排序的简单实例

    Java8HashMap键与Comparable接口编程开

    这里我们将深入探讨Java 8 HashMap如何与Comparable接口结合使用,以及这背后的编程技术和设计原理。 首先,我们了解下Comparable接口。Comparable接口是Java中用于定义对象之间自然顺序的接口,它只有一个方法`...

    java,Comparable接口实例

    1.什么是Comparable接口 此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort ...

    java 实现Comparable接口排序,升序、降序、倒叙

    Java 实现 Comparable 接口排序,升序、降序、倒叙 Java 中的 Comparable 接口是一个非常重要的接口,它提供了一种排序的机制,允许开发者自定义对象的排序规则。在 Java 中,实现 Comparable 接口的类可以使用 ...

    浅析Java中comparator接口与Comparable接口的区别

    首先,Comparable接口是一个排序接口,它定义了一个单一的方法`compareTo(T o)`,使得实现了Comparable接口的类的对象能够进行自然排序。这意味着如果你有一个实现了Comparable接口的对象列表(如List),你可以直接...

    java中实现Comparable接口实现自定义排序的示例

    Comparable 接口是 Java 中的一个接口,它定义了一个compareTo 方法,该方法用于比较两个对象的大小。该接口通常用于实现自定义排序的需求。 在我们的示例中,我们定义了一个 Student 类,该类实现了 Comparable ...

    ComparableCircle类

    创建名为ComparableCircle的类,它继承自Circle类,并实现Comparable接口。画出UML图并实现compareTo方法,使其根据面积比较两个圆。编写一个测试程序求出ComparableCircle对象的两个实例中的较大者。

    java比较器Comparable接口与Comaprator接口的深入分析

    Java中的比较器主要涉及到两种接口:Comparable接口和Comparator接口,它们在处理对象排序时起着关键作用。 **Comparable接口** Comparable接口是Java.lang包下的一个接口,它只有一个方法:compareTo(T o)。当一个...

    推选Comparable自比较接口PPT资料.pptx

    Comparable接口是Java中用于对象排序的关键接口,它允许类的对象之间进行比较,并定义它们的自然排序。这个接口只有一个方法:`compareTo(Object o)`,此方法用于比较当前对象与指定对象`o`的顺序。如果当前对象小于...

    【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip

    本课程重点讲解了`TreeSet`如何实现`Comparable`接口以及如何自定义比较规则。 首先,我们来了解`TreeSet`的基本概念。`TreeSet`内部使用红黑树数据结构存储元素,这使得它的插入、删除和查找操作具有较高的效率,...

    Comparable接口和Comparator接口的比较

    Comparable接口和Comparator接口是Java中用于排序的关键组件,它们在数据结构如数组、集合和映射的排序过程中扮演着重要角色。接下来我们将深入探讨这两个接口的特性、用途以及它们之间的区别。 1. Comparable接口...

    java中Comparable和Comparator的区别

    值得注意的是,Comparable接口的排序是全局的,也就是说,所有实现了Comparable接口的对象都将遵循同一个排序规则。而Comparator接口的排序是局部的,即在每个特定的排序操作中,可以根据需要创建不同的Comparator...

    Comparable&Comparator区别

    #### 二、Comparable接口解析 ##### 1. 概念介绍 `Comparable`接口位于`java.lang`包中,它定义了一个单一的方法`compareTo`。这个接口适用于那些具有自然顺序的对象。当一个类实现了`Comparable`接口时,意味着它...

    Java中Comparable和Comparator的区别

    Comparable接口来源于java.lang包,它定义了一个方法`compareTo(T o)`。任何类如果实现了Comparable接口,就表明这个类的对象可以相互比较大小。例如,Java中的String、Integer等类都实现了Comparable接口,这使得...

    Comparable与Comparator的区别

    **Comparable接口** Comparable接口位于`java.lang`包下,它是一个对象自比较的接口。任何类如果需要进行排序,可以实现Comparable接口。例如,String、Integer等内置类已经实现了Comparable接口,可以方便地进行...

    comparable和compartor区别

    #### 二、Comparable接口详解 `Comparable`接口是一种内置的比较机制,它允许一个类能够自我比较,即一个类自己实现了如何与其他同类型的对象进行比较的方法。当我们希望一个类能够按照某种规则进行排序时,就可以让...

    java实现别踩白块儿源码-SortedList:用Java编写的SortedList的实现。可以与实现Comparable接口的对象一起使用

    当且仅当要使用的对象实现Comparable接口时,我们也可以创建不带Comparator对象的SortedList。 用法 我们将像创建Java中的任何ArrayList一样创建SortedList: SortedList sortedlist = new SortedList(comparator); ...

Global site tag (gtag.js) - Google Analytics