对象排序方法

对象的排序可以有两种实现方式:Comparator和Comparable

Comparator会与当前类绑定,Comparable则不会强制与当前类进行绑定,比较灵活。

1、实现Compare接口

这个接口需要跟一个类绑定,例子如下:

按人名排序

public class Person implements Comparable<Person> {

    private Stringname ;

    public Person(String name) {

       this.name = name;

    }

    public int compareTo(Person person) {

    return this.name.compareTo(person.getName());

    }

    public String getName() {

       return this.name ;

    }

    public String toString(){

    return this.name;

    }

}

 

public class ArraysSortUnit {

    public static void main(String[] args) {

       Person[] ps = { new Person("li6" ),new Person("li2" ),

              new Person("li85"),new Person("li56"),

              new Person("li4" ),new Person("li9" ),

              new Person("li3") };

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

       Arrays.sort (ps);

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

    }

}

 

输出结果如下:

[li6, li2, li85, li56, li4, li9, li3]
[li2, li3, li4, li56, li6, li85, li9]

2、实现Comparator接口

import java.util.Comparator;

public class PersonComparator implements Comparator<Person> {

    public int compare(Person person1, Person person2) {

       if(person1 ==null || person1.getName() ==null){

           return -1;

       }

       if(person2 ==null){

           return 1;

       }

       return person1.getName().compareTo(person2.getName());

    }

}

 

import java.util.Arrays;

import java.util.Collections;

public class ArraysSortUnit {

    public static void main(String[] args) {

       Person[] ps = { new Person("li6" ),new Person("li2" ),

              new Person("li85"),new Person("li56"),

              new Person("li4" ),new Person("li9" ),

              new Person("li3") };

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

       Collections.sort(Arrays.asList(ps) ,new PersonComparator());

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

    }

}

 

输出结果如下:

[li6, li2, li85, li56, li4, li9, li3]
[li2, li3, li4, li56, li6, li85, li9]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值