Java中对ArrayList进行排序

来源:互联网 发布:db2 sql 正则表达式 编辑:程序博客网 时间:2024/05/19 23:59

今天遇到需要对List进行排序的需求,虽然自己可以写算法实现排序,但是追求效率还是选择最常用的Java自带的方法进行排序,主要是利用Collections.sort(Object o,Comparator c),代码如下:

package com.wistron.ets.wh.edu.ass.core.common;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** * @ClassName: TestList * @Description: TODO(这里用一句话描述这个类的作用) * @author WH1405010 杨孙  * @date 2014年11月5日 下午2:59:30 *  */public class TestList {public static void main(String[] args) {// 测试数据Test t1 = new Test(6, "A1");Test t2 = new Test(1, "A2");Test t3 = new Test(3, "A3");Test t4 = new Test(4, "A6");Test t5 = new Test(4, "A5");Test t6 = new Test(4, "A4");List<Test> list = new ArrayList<Test>();list.add(t1);list.add(t2);list.add(t3);list.add(t4);list.add(t5);list.add(t6);// 排序,通过泛型和匿名类来实现Collections.sort(list, new Comparator<Test>() {public int compare(Test o1, Test o2) {// 首先按照Id排序int result = o1.getId() - o2.getId();// Id相同时按照Name排序if (result == 0) {result = o1.getName().compareTo(o2.getName());// System.out.println(result);}return result;}});// 打印结果for(Test test : list){System.out.println("id=" + test.getId() + ";name=" + test.getName());  }}}// 测试的内部类class Test {private int id;private String name;public Test(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

打印结果如下:

id=1;name=A2
id=3;name=A3
id=4;name=A4
id=4;name=A5
id=4;name=A6
id=6;name=A1


在本例中
new Comparator<Test>()
可以写成内部类的形式,如果需求的排序比较复杂的话。另外,排序的另一种实现方式是让需要排序的类实现Comparable接口,然后调用以下代码:

Collections.sort(list);



0 0
原创粉丝点击