java 集合排序_java对集合进行排序的两种方法

1. 为集合中对象的所属类实现了 java.lang.Comparable 接口

对需要排序的person类实现Comparable接口,实现接口的CompareTo方法来定义排序的规则

public class Person implements Comparable{

private final int id;

private String name;

private int age;

public Person(int id,String name,int age){

this.id = id;

this.name = name;

this.age = age;

}

public int getId(){

return id;

}

public void setName(String name){

this.name = name;

}

public String getName(){

return name;

}

public void setAge(int age){

this.age = age;

}

public int getAge(){

return age;

}

@Override

public String toString(){

return "Id: " + id + "/tName: " + name + "/tAge: " + age;

}

@Override

public int compareTo(Object o){ // 实现 Comparable 接口的抽象方法,定义排序规则

Person p = (Person)o;

return this.id - p.id; // 升序排列,反之降序

}

@Override

public boolean equals(Object o){ //equals

boolean flag = false;

if(o instanceof Person){

if(this.id == ((Person)o).id)

flag = true;

}

return false;

}

}

测试类

import java.util.TreeSet;

import java.util.Iterator;

public class TestComparable{

public static void main(String[] args) {

TreeSet ts = new TreeSet();

ts.add(new Person(1003," 张三 ",15));

ts.add(new Person(1008," 李四 ",25));

ts.add(new Person(1015," 王五 ",73));

ts.add(new Person(1001," 赵六 ",49));

Iterator it = ts.iterator();

while(it.hasNext()){

Person employee = (Person)it.next();

System.out.println(employee);

}

}

}

2. 为集合指定比较器 java.lang.Comparator 的实现类

需要排序的类

//需要排序的类的对象

public class Person{

private final int id;

private String name;

private int age;

public Person(int id,String name,int age){

this.id = id;

this.name = name;

this.age = age;

}

public int getId(){

return id;

}

public void setName(String name){

this.name = name;

}

public String getName(){

return name;

}

public void setAge(int age){

this.age = age;

}

public int getAge(){

return age;

}

@Override

public String toString(){

return "Id: " + id + "/tName: " + name + "/tAge: " + age;

}

}

//创建person类的比较器

package ClassTest;

import java.util.Comparator;

public class PersonComparetor implements Comparator{

public int compare(Person o1, Person o2) {

// return o1.getId()-o2.getId(); //升序

return o2.getId()-o1.getId(); //降序

}

}

//测试类

public class TestComparable {

public static void main(String[] args) {

List ts=new ArrayList();

ts.add(new Person(1003," 张三 ",15));

ts.add(new Person(1008," 李四 ",25));

ts.add(new Person(1015," 王五 ",73));

ts.add(new Person(1001," 赵六 ",49));

PersonComparetor pc=new PersonComparetor();

Collections.sort(ts, pc);

for(Person p:ts){

System.out.println(p);

}

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2014-09-23 15:21

浏览 1174

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值