您的位置:首页 > 编程语言 > Java开发

java中List的排序功能的实现

2015-07-17 15:13 567 查看
今天在工作的时候,遇到了List排序的问题,所以总结了一下,与大家分享.Collections.sort排序的时候,用到了Comparator接口下面的compare()方法.下面的小例子中,还用到了匿名类技术和泛型,若朋友们看不懂,可以留言提问^-^

compare(Object
对象1,Object 对象2)重写时

1) 若返回负数,则表示 对象1<对象2

2) 若返回0,则表示 对象1=对象2

3) 若返回正数,则表示 对象1>对象2

反过来,在String类中,他有个CompareTo()方法,他的比较结果也是如此

字符串1.CompareTo(字符串2)比较结果

1) 若字符串1<字符串2,则返回负数

2) 若字符串1=字符串2,则返回0

3) 若字符串1>字符串2,则返回正数

Java代码


//SortList.java

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.Iterator;

import java.util.List;

public class SortList {

public static void main(String[] args) {

// 方法 一 Test

// 测试数据

Test t1 = new Test(88, "phl");

Test t2 = new Test(6, "aaa");

Test t3 = new Test(3, "abc");

Test t4 = new Test(5, "aac");

Test t5 = new Test(4, "adc");

Test t6 = new Test(4, "aac");

Test t7 = new Test(4, "aaa");

List<Test> ts = new ArrayList<Test>();

ts.add(t1);

ts.add(t2);

ts.add(t3);

ts.add(t4);

ts.add(t5);

ts.add(t6);

ts.add(t7);

// 排序,通过泛型和匿名类来实现

Collections.sort(ts, new Comparator<Test>() {

public int compare(Test o1, Test o2) {

int result = o1.getId() - o2.getId();

if (result == 0) {

result = o1.getName().compareTo(o2.getName());

}

return result;

}

});

// 打印排序结果

Iterator<Test> iterator = ts.iterator();

while (iterator.hasNext()) {

Test test = iterator.next();

System.out.println("id=" + test.getId() + ";name=" + test.getName());

}

System.out.println("*******************************************");

// 方法 二 Test2

// 测试数据

//Comparable<Test2>[] ts2 = new Test2[5];

Test2[] ts2 = new Test2[5];

ts2[0] = new Test2(11, "phl");

ts2[1] = new Test2(16, "aaa");

ts2[2] = new Test2(21, "adc");

ts2[3] = new Test2(14, "acd");

ts2[4] = new Test2(6, "ada");

java.util.Arrays.sort(ts2);

// 打印排序结果

for (int i = 0; i < ts2.length; i++) {

System.out.println("id=" + ts2[i].getId() + ";name=" + ts2[i].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;

}

}

// 测试类

class Test2 implements java.lang.Comparable<Test2> {

private int id;

private String name;

public Test2(int id, String name) {

this.id = id;

this.name = name;

}

// 实现接口比较方法

public int compareTo(Test2 t) {

return this.id - t.getId();

}

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=3;name=abc

id=4;name=aaa

id=4;name=aac

id=4;name=adc

id=5;name=aac

id=6;name=aaa

id=88;name=phl

*******************************************

id=6;name=ada

id=11;name=phl

id=14;name=acd

id=16;name=aaa

id=21;name=adc

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: