List的排序问题

1.List排序方法

List的父接口Collections里为我们提供了两种方法:

1.1.List的里面的类型实现Comparable接口

1.2.在排序时传入Comparator的实例

	 static <T extends Comparable<? super T>>  void	sort​(List<T> list)
	 static <T> void sort​(List<T> list, Comparator<? super T> c)

2.具体实例

下面展示第一种方式

2.1首先定义一个实体类实现 Comparable接口,同时必须实现排序方法 compareTo

!!!!!!注意排序正序时:1.this 大返回正数,2. this小返回负数 ,3相等返回0,此处示例为int可以直接相比较
下面是List里需要传入的类型

class Person implements Comparable<Person>{
    private int age;
    private String name;
    public Person(){};
    public Person(String name,int age){
        this.age=age;
        this.name=name;
    }
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
	//实现Comparable的比较方法
    @Override
    public int compareTo(Person o) {
        return this.age-o.age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

2.2然后我们运行

 public static void main(String[] args) {

       List<Person> list =new ArrayList<Person>();
       list.add(new Person("t1",20));
       list.add(new Person("t2",15));
       list.add(new Person("t3",25));
       System.out.println("排序前");
       for(Person p:list)
       {
           System.out.println(p);
       }
       Collections.sort(list);
       System.out.println("排序后");
       for(Person p:list)
       {
           System.out.println(p);
       }
   }

运行结果为:
在这里插入图片描述

2.3 在排序时传入Comparator的实例

下面展示Person类。

class Person {
    private int age;
    private String name;
    public Person(){};
    public Person(String name,int age){
        this.age=age;
        this.name=name;
    }
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

2.4 排序方法:在sort()方法中第二个参数传入一个Comparator的实例

   public static void main(String[] args) {

    List<Person> list =new ArrayList<Person>();
    list.add(new Person("t1",20));
    list.add(new Person("t2",15));
    list.add(new Person("t3",25));
    System.out.println("排序前");
    for(Person p:list)
    {
        System.out.println(p);
    }
    //此处排序
    Collections.sort(list,new Comparator<Person>(){

        @Override
        public int compare(Person o1, Person o2) {
            return o1.getAge()-o2.getAge();
        }
    });
    System.out.println("排序后");
    for(Person p:list)
    {
        System.out.println(p);
    }
}

排序结果为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值