zoukankan      html  css  js  c++  java
  • Java面向对象_常用类库api——对象比较器

    概念:对两个或多个数据项进行比较,以确定他们是否相等,或确定他们之间的大小关系及排列顺序成为比较。

    1.Comparable接口:

       此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。

     1 public class ComparableDemo {
     2 
     3     /**
     4      * @param args
     5      */
     6     public static void main(String[] args) {
     7         // TODO Auto-generated method stub
     8         Cat[] cats={new Cat("tom",4),new Cat("jack",3),new Cat("xiaohua",5)};
     9         Arrays.sort(cats);
    10         for (Cat cat : cats) {
    11             System.out.println(cat);
    12         }
    13     }
    14 
    15 }
     1 public class Cat implements Comparable<Cat> {
     2     private String name;
     3     private int age;
     4     
     5     public Cat() {
     6         super();
     7         // TODO Auto-generated constructor stub
     8     }
     9     public Cat(String name, int age) {
    10         super();
    11         this.name = name;
    12         this.age = age;
    13     }
    14     public String getName() {
    15         return name;
    16     }
    17     public void setName(String name) {
    18         this.name = name;
    19     }
    20     public int getAge() {
    21         return age;
    22     }
    23     public void setAge(int age) {
    24         this.age = age;
    25     }
    26     @Override
    27     public String toString() {
    28         return "Cat [name=" + name + ", age=" + age + "]";
    29     }
    30     //通过此方法实现对象比较
    31     @Override
    32     public int compareTo(Cat o) {
    33         // TODO Auto-generated method stub
    34         if(this.age <o.age ){//从小到大排序
    35             return -1;
    36         }else if(this.age >o.age ){
    37             return 1;
    38         }else{
    39         return 0;
    40     }
    41     }
    42     
    43 }

    2.Comparator接口:(不改变类,再写一个比较类)

       强行对某个对象collection进行整体排序的比较。

     1 public class ComparableDemo {
     2 
     3     /**
     4      * @param args
     5      */
     6     public static void main(String[] args) {
     7         // TODO Auto-generated method stub
     8         Dog[] dogs={new Dog("tom",4),new Dog("jack",3),new Dog("xiaohua",5)};
     9         Arrays.sort(dogs, new DogComparator());
    10         for (Dog dog : dogs) {
    11             System.out.println(dog);
    12         }
    13     }
    14 
    15 }
     1 public class Dog {
     2     private String name;
     3     private int age;
     4     public Dog() {
     5         super();
     6         // TODO Auto-generated constructor stub
     7     }
     8     public Dog(String name, int age) {
     9         super();
    10         this.name = name;
    11         this.age = age;
    12     }
    13     public String getName() {
    14         return name;
    15     }
    16     public void setName(String name) {
    17         this.name = name;
    18     }
    19     public int getAge() {
    20         return age;
    21     }
    22     public void setAge(int age) {
    23         this.age = age;
    24     }
    25     @Override
    26     public String toString() {
    27         return "Dog [name=" + name + ", age=" + age + "]";
    28     }
    29 }
     1 import java.util.Comparator;
     2 
     3 public class DogComparator implements Comparator<Dog>{
     4 
     5     @Override
     6     public int compare(Dog o1, Dog o2) {
     7         // TODO Auto-generated method stub
     8         if(o1.getAge()<o2.getAge()){
     9             return -1;
    10         }else if(o1.getAge()>o2.getAge()){
    11             return 1;
    12         }else{
    13         return 0;
    14     }
    15     }
    16         
    17 }
  • 相关阅读:
    android中文件操作的四种枚举
    【第4节】索引、视图、触发器、储存过程、
    【第3篇】数据库之增删改查操作
    【第2篇】基本操作和存储引擎
    【第1篇】数据库安装
    123
    111
    1111111
    源码
    【COLLECTION模块】
  • 原文地址:https://www.cnblogs.com/shenhainixin/p/5088907.html
Copyright © 2011-2022 走看看