Java,J2EE,Weblogic,Oracle

java项目随笔
随笔 - 90, 文章 - 6, 评论 - 61, 引用 - 0
数据加载中……

java List 排序 Collections.sort() 对 List 排序

//一个POJO例子

class User {
 String name;
 String age;
 
 public User(String name,String age){
  this.name=name;
  this.age=age;
 }
 public String getAge() {
  return age;
 }
 public void setAge(String age) {
  this.age = age;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 } 
}


//具体的比较类,实现Comparator接口

import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

public class ComparatorUser implements Comparator{

 public int compare(Object arg0, Object arg1) {
  User user0=(User)arg0;
  User user1=(User)arg1;

   //首先比较年龄,如果年龄相同,则比较名字

  int flag=user0.getAge().compareTo(user1.getAge());
  if(flag==0){
   return user0.getName().compareTo(user1.getName());
  }else{
   return flag;
  }  
 }
 
}




//测试类
public class SortTest {

 
 public static void main(String[] args){
  List userlist=new ArrayList();
  userlist.add(new User("dd","4"));
  userlist.add(new User("aa","1"));
  userlist.add(new User("ee","5"));
  userlist.add(new User("bb","2"));  
  userlist.add(new User("ff","5"));
  userlist.add(new User("cc","3"));
  userlist.add(new User("gg","6"));
  
  ComparatorUser comparator=new ComparatorUser();
  Collections.sort(userlist, comparator);
   
  for (int i=0;i<userlist.size();i++){
   User user_temp=(User)userlist.get(i);
      System.out.println(user_temp.getAge()+","+user_temp.getName()); 
  }
  
 }
}

 //首先年龄排序,如果年龄相同,则按名字排序

结果:
   1, aa
   2, bb
   3, cc
   4, dd
   5, ee                    //注意:同样是5岁的人,则比较名字(ee,ff),然后排序
   5, ff
   6, gg

posted on 2008-01-17 18:20 龚椿深 阅读(337225) 评论(32)  编辑  收藏

评论

# re: Collections.sort() 对 List 排序  回复  更多评论   

说的很清楚,明了,受用了,谢谢!
2008-08-25 21:45 | jj

# re: Collections.sort() 对 List 排序  回复  更多评论   

不错,受用了,
2008-09-02 21:50 | bdllong

# re: Collections.sort() 对 List 排序[未登录]  回复  更多评论   

GOOD!!!!!!!!!!
2009-02-26 16:33 | XXX

# re: Collections.sort() 对 List 排序[未登录]  回复  更多评论   

效果还不错
谢谢了
2009-03-18 17:12 | king

# re: Collections.sort() 对 List 排序  回复  更多评论   

Collections 是Collection的一个辅助类
2009-04-13 21:26 | pmbmessenger

# re: Collections.sort() 对 List 排序  回复  更多评论   

great!!!
2009-06-10 14:06 | leeo

# re: Collections.sort() 对 List 排序[未登录]  回复  更多评论   

十分感谢,才用你的方法问题解决了.
2009-06-25 14:46 | scorpio

# re: Collections.sort() 对 List 排序  回复  更多评论   

十分感谢
2009-08-12 16:28 | fangwei

# re: Collections.sort() 对 List 排序  回复  更多评论   

是Comparator还是Comparable??
2009-08-30 01:08 | DB Compare Tool

# re: Collections.sort() 对 List 排序  回复  更多评论   

其实本质是集合不能排序的
需要调用数组排序

Arrays.sort(array)

------MergeSort(array)

2009-10-15 10:57 | charlie's logic

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

太感谢你拉。找了好久。终于找到个有用的。感谢感谢!!
2010-12-31 10:12 | xiefei

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

非常好,谢谢
2011-08-03 11:40 | balc

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

怎么能实现部分排序?就是我不要求list中数据全部排好序,只要最大的30个数据按从大到小排序
2012-02-21 15:42 | sxc

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

爱死你了。
2012-03-21 10:08 | Hvance

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

谢谢啦!!!! 弄懂了
2012-05-11 10:44 | 小小强

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

谢谢了 帮了我一大忙
2012-05-24 15:05 | jsabcasdkvhbf

# re: java List 排序 Collections.sort() 对 List 排序[未登录]  回复  更多评论   

thanks,it's good example.
2012-06-02 14:17 | jerome

# re: java List 排序 Collections.sort() 对 List 排序[未登录]  回复  更多评论   

如果要将其中某一元素放在第一位呢?怎么做?
2012-07-09 11:49 | 王明

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

楼主,你的这个有问题,那个AGE还是要用INT型的才行,按你这个来比较的话,如果是100,则它比较的时候会把100当成1,所以你这个要稍稍改一下,前面AGE改成INT的,int flag=user0.getAge()-user1.getAge();这样就行了
2012-08-06 16:02 | tomcrease

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

太好了
2012-09-19 14:14 | 41454

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

高手呀,太好用了!顶起!
2013-06-14 10:05 | 木子丁

# re: java List 排序 Collections.sort() 对 List 排序[未登录]  回复  更多评论   

@tomcrease
感谢提醒。。。
2013-08-20 16:45 | leo

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

你的排序功能有问题,你往list里添加个13的试试运行效果。
2013-09-24 14:37 | wzc

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

@tomcrease
非常感谢
2013-11-14 13:48 | 飞龙

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

int没有compareTo方法吧??????????????
2014-02-21 16:17 | lhw

# re: java List 排序 Collections.sort() 对 List 排序[未登录]  回复  更多评论   

这方法要是int是十六进制的该怎么办啊。我的十六进制的,数据不对啊
2014-03-18 09:44 | 阿福

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

楼主把age也设置成String类型了,可以么,倒是有Compareto方法了,Integer会好点吧
2014-04-19 17:27 | 发到付

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

不错,好东西
2014-09-03 10:16 |

# re: java List 排序 Collections.sort() 对 List 排序[未登录]  回复  更多评论   

你这个只是按照字典顺序排序的,11 ,3,22 如果这是age你试试
2014-11-05 09:38 | hua

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

为什么,我用同样的方法就是不行呢,,不能用啊
2015-02-02 16:44 | 夏夏

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

在jsp 代码中使用,是不行的,不知道为什么
2015-04-28 17:37 | 源代码

# re: java List 排序 Collections.sort() 对 List 排序  回复  更多评论   

哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇
2015-06-13 20:04 | 休息休息

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问