zoukankan      html  css  js  c++  java
  • java 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));

        }

    }

  • 相关阅读:
    GCC的gcc和g++的区别
    C++运行程序依赖的环境-vcredist_x64.exe
    linux账户管理[转自vbird]
    Linux 的账号与群组[转自vbird]
    文件的搜寻【转vbird】
    常用的文件和目录操作命令【转vbird】
    十六进制查看器【转】
    文件与目录的默认权限与隐藏权限【转vbird】
    改变文件属性与权限(转)
    Linux目录规范和含义(转)
  • 原文地址:https://www.cnblogs.com/liwenzhu/p/3599915.html
Copyright © 2011-2022 走看看