`
davice_li
  • 浏览: 92954 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Comparable接口的使用

 
阅读更多

利用 Comparable 接口创建自己的类的排序顺序,只是实现 compareTo() 方法的问题。通常就是依赖几个数据成员的自然排序。同时类也应该覆盖 equals() 和 hashCode() 以确保两个相等的对象返回同一个哈希码。

这个接口的作用:如果数组或者集合中的(类)元素实现了该接口的话 , 我们就可以调用 Collections.sort 和 Arrays.sort 排序,或应用于有序集合 TreeSet 和 TreeMap 中。

下面设计一个有序的类 Person ,它实现 Comparable 接口,以年龄为第一关键字,姓名为第二关键字升序排序。

Person.java

 

package com.zj.sort.comparable;

 

public class Person implements Comparable<Person> {

    private int age ;

    private String name ;

 

    public Person( int age, String name) {

       this . age = age;

       this . name = name;

    }

 

    public int compareTo(Person person) {

       int cop = age - person.getAge();

       if (cop != 0)

           return cop;

       else

           return name .compareTo(person. name );

    }

 

    public int getAge() {

       return age ;

    }

 

    public String getName() {

       return name ;

    }

 

    public int hashCode() {

       int result = 17;

       result = 37 * result + age ;

       result = 37 * result + name .hashCode();

       return result;

    }

 

    public boolean equals(Object o) {

       if (!(o instanceof Person))

           return false ;

       Person person = (Person) o;

       return ( age == person. age ) && ( name .equals(person. name ));

    }

 

    public String toString() {

       return ( age + "{" + name + "}" );

    }

}

2.1 测试 Arrays.sort ()方法

ArraysSortUnit.java

 

package com.zj.sort.comparable;

import java.util.Arrays;

import com.zj.compare.Person;

 

public class ArraysSortUnit {

    public static void main(String[] args) {

       Person[] ps = { new Person(20, "Tom" ), new Person(20, "Jeff" ),

              new Person(30, "Mary" ), new Person(20, "Ada" ),

              new Person(40, "Walton" ), new Person(61, "Peter" ),

              new Person(20, "Bush" ) };

       System. out .println(Arrays.toString (ps));

       Arrays.sort (ps);

       System. out .println(Arrays.toString (ps));

    }

}

分享到:
评论

相关推荐

    Comparable接口和Comparator使用示例

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

    comparator接口与Comparable接口的区别

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

    Java8HashMap键与Comparable接口编程开

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

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

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

    java,Comparable接口实例

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

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

    在 Java 中,实现 Comparable 接口的类可以使用 Arrays.sort() 或 Collections.sort() 方法对对象列表进行排序。 在本文中,我们将详细介绍如何使用 Comparable 接口对 Java 对象进行排序,包括升序、降序和倒叙...

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

    这意味着如果你有一个实现了Comparable接口的对象列表(如List),你可以直接使用Collections.sort()或者Arrays.sort()方法对这个列表进行排序。例如,String类就默认实现了Comparable接口,因此可以直接对字符串...

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

    此外,通过Java的工具类`Collections`和`Arrays`,可以对实现了Comparable接口的对象列表或数组进行自动排序,如使用`Collections.sort()`和`Arrays.sort()`方法。 在Java中,一些预定义的类,如`Integer`、`Double...

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

    这篇文章将为大家带来一个使用 Comparable 接口实现自定义排序的示例。 首先,让我们来了解一下 Comparable 接口。Comparable 接口是 Java 中的一个接口,它定义了一个compareTo 方法,该方法用于比较两个对象的...

    java中Comparable和Comparator的区别

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

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

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

    Comparable接口和Comparator接口的比较

    - 自动排序:实现了Comparable接口的类的对象可以直接使用Collections.sort()或Arrays.sort()进行排序,而不需要额外的Comparator。 - 比较规则:Comparable接口定义的是类的自然排序,而Comparator提供更灵活的比较...

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

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

    Comparable&Comparator区别

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

    Comparable与Comparator的区别

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

    Java中Comparable和Comparator的区别

    例如,Java中的String、Integer等类都实现了Comparable接口,这使得我们可以直接使用这些对象进行自然顺序的比较。当我们需要按照特定规则对类实例进行排序时,只需要在自定义类中实现Comparable接口,并重写`...

    comparable和compartor区别

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

    ComparableCircle类

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

    对比Java中的Comparable排序接口和Comparator比较器接口

    当你有一个实现了Comparable接口的对象列表或数组时,可以直接使用Collections.sort()或Arrays.sort()对其进行排序。Comparable接口只有一个方法,即`compareTo(T o)`,用于比较当前对象与传入的对象o的大小关系。...

Global site tag (gtag.js) - Google Analytics