您的位置:首页 > 其它

使用Collections.sort对集合进行排序。

2014-04-15 13:40 627 查看


Collections.sort有两种用法

一、list集合中的每个元素都是字符串,直接使用这个方法,可以顺序排序。
二、list集合中的每个元素是一个对象,可以让这个对象实现一个借口,然后定制化排序方式。

/**

* @author guwh

* @version 创建时间:2011-11-3 上午10:49:36

* 类说明

*/

package com.jabberchina.test;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

public class SortTest {

public static void main(String[] args) {

List<String> lists = new ArrayList<String>();

List<A> list = new ArrayList<A>();

List<B> listB = new ArrayList<B>();

lists.add("5");

lists.add("2");

lists.add("9");

//lists中的对象String 本身含有compareTo方法,所以可以直接调用sort方法,按自然顺序排序,即升序排序

Collections.sort(lists);

A aa = new A();

aa.setName("aa");

aa.setOrder(1);

A bb = new A();

bb.setName("bb");

bb.setOrder(2);

list.add(bb);

list.add(aa);

//list中的对象A实现Comparable接口

Collections.sort(list);

B ab = new B();

ab.setName("ab");

ab.setOrder("1");

B ba = new B();

ba.setName("ba");

ba.setOrder("2");

listB.add(ba);

listB.add(ab);

//根据Collections.sort重载方法来实现

Collections.sort(listB,new Comparator<B>(){

@Override

public int compare(B b1, B b2) {

return b1.getOrder().compareTo(b2.getOrder());

}

});

System.out.println(lists);

System.out.println(list);

System.out.println(listB);

}

}

class A implements Comparable<A>{

private String name;

private Integer order;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getOrder() {

return order;

}

public void setOrder(Integer order) {

this.order = order;

}

@Override

public String toString() {

return "name is "+name+" order is "+order;

}

@Override

public int compareTo(A a) {

return this.order.compareTo(a.getOrder());

}

}

class B{

private String name;

private String order;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getOrder() {

return order;

}

public void setOrder(String order) {

this.order = order;

}

@Override

public String toString() {

return "name is "+name+" order is "+order;

}

}

打印的结果为:

 [2, 5, 9]

[name is aa order is 1, name is bb order is 2]

[name is ab order is 1, name is ba order is 2]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: