List排序

今天项目中涉及到对list的排序,特记录于此:
在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。
  你能够使用java.util.Collections类中的sort()方法对List元素进行排序。你既可以给方法传递一个List对象,也可以传递一个List和一个Comparator。如果列表中的元素全都是相同类型的类,并且这个类实现了Comparable接口,你可以简单的调用Collections.sort()。如果这个类没有实现Comparator,你也可以传递一个Comparator到方法sort()中,进行排序。如果你不想使用缺省的分类顺序进行排序,你同样可以传递一个Comparator到方法sort()中来进行排序。

 

首先按照第一中进行排序:

java程序如下:

按照年龄进行排序:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Student implements Comparable {
    private int id;
    private int age;
    private String name;
    public Student(int id,int age, String name){
        this.id=id;
        this.age = age;
        this.name = name;
    }
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    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 "Student [id=" + id + ", age=" + age + ", name=" + name + "]";
    }
    
    
    public static void main(String args[]){
        List<Student> list=new ArrayList<Student>();
        for(int i=10;i>0;i--){
            list.add(new Student(i,i+10,"小莉"+i));
        }
        
        Collections.sort(list);
        for(Student s: list){
            System.out.println(s+"");
        }
    }

    public int compareTo(Object o) {
        if(o instanceof Student){
            Student s=(Student)o;
            if(this.age>s.age){
                return 1;
            }
            else{
                return 0;
            }
        }
        return -1;
    }
    

}

 

结果如下:

Student [id=10, age=20, name=小莉10]
Student [id=9, age=19, name=小莉9]
Student [id=8, age=18, name=小莉8]
Student [id=7, age=17, name=小莉7]
Student [id=6, age=16, name=小莉6]
Student [id=5, age=15, name=小莉5]
Student [id=4, age=14, name=小莉4]
Student [id=3, age=13, name=小莉3]
Student [id=2, age=12, name=小莉2]
Student [id=1, age=11, name=小莉1]

按照第二种进行排序:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class ListSort {
  public static void main(String[] args) {
    ArrayList list = new ArrayList();
    list.add("92");
    list.add("68");
    list.add("168");
    list.add("242");
    list.add("317");
    list.add("105");
    // 字符串排序
    Collections.sort(list);
    System.out.println(list.toString()); // [105, 168.61, 242, 317, 68.9, 92.8]
    Collections.sort(list, new Comparator() {
      @Override
      public int compare(Object o1, Object o2) {
        return new Double((String) o1).compareTo(new Double((String) o2));
      }
    });
    System.out.println(list.toString()); // [68.9, 92.8, 105, 168.61, 242, 317]
  }
}

结果为:

 

[105, 168, 242, 317, 68, 92]
[68, 92, 105, 168, 242, 317]

转载于:https://www.cnblogs.com/androidsuperman/p/4194772.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值