日历

2008 8.20 Wed
     12
3456789
10111213141516
17181920212223
24252627282930
31      
«» 2008 - 8 «»

文章搜索

日志文章

2007年10月20日 23:04:19

集合元素排序

在项目中经常可能遇到按照年份排序,按照姓名排序等等一些情况,下面一个实例,针对集合中元素进行排序.
首先一个User.java类,代码如下:
package com.fuxi3;
public class User {
private int age;
private String name;
public User(int age, String name) {
super();
this.age = age;
this.name = name;
}
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;
}
}
然后写一个排序的单独类,这个类实现Comparator接口,代码如下:
package com.fuxi3;
import java.util.Comparator;
public class ComparatorTest implements Comparator{
public int compare(Object o1, Object o2) {
User u1=(User)o1;
User u2=(User)o2;
//按年龄排序
if(u1.getAge()>u2.getAge())
  return 1;
if(u1.getAge()==u2.getAge())
  return 0;
else
return -1;

//按姓名排序
// if(u1.getName().compareTo(u2.getName())>0)
//   return 1;
// if(u1.getName().compareTo(u2.getName())==0)
//   return 0;
// else
//   return -1;
}
}
最后一个集合操作类,对集合中元素进行排序,代码如下:
package com.fuxi3;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionDemo{
public static void test(){
List<User> list=new ArrayList<User>();
list.add(new User(30,"aa"));
list.add(new User(55,"ee"));
list.add(new User(3,"cc"));

Collections.sort(list,new ComparatorTest());
for (User user : list) {
  System.out.println(user.getName()+"的年龄为"+user.getAge());
}
}
public static void main(String[] args) {
test();
}
}
OK,输出结果如下:
cc的年龄为3
aa的年龄为30
ee的年龄为55
比较下看看,是不是已经按年龄排好序咯.^_^

Tags: 排序  

类别: java |  评论(0) |  浏览(4331) |  收藏
发表评论