`

java 集合类 排序

 
阅读更多
import java.util.Collections;
import java.util.Comparator;
import java.util.Vector;


public class TestClass {
public static void main(String[] args){
Vector<Integer> v=new Vector<Integer>();
        v.add(5);
        v.add(3);
        v.add(2);
        v.add(1);
        v.add(4);
        Comparator<Integer> cm = new MyComparator();
        Collections.sort(v,cm );
        for(Integer x :v)
        System.out.print(x + " ");
}
}

class MyComparator implements Comparator<Integer>{
public int compare(Integer i1, Integer i2) {
if (i1 > i2) return -1;
else if (i1 == i2) return 0;
else return 1;
}
}



==========================

ArrayList<User>. 按照User中的userId排序该怎么排呢?
虚心请教各位高手.方式越多越好.

2010-4-21 22:45
最佳答案

Java内建的排序(冒泡):Java集合有两个实现的工具类,Collections和Arrays。Collections针对集合类型。Arrays针对数组。只需要一个为你排序需要的定制的Comparator或Comparable的实现,将其作为参数传给Collections或Arrays的sort方法就行。

可以自己用程序去实现这个排序。用for从原List里面一个一个拿出来比较然后一个新建的List里面去。
楼主看一下参考资料。


============
http://www.iteye.com/topic/503812


1:使用Comparator接口实现排序:实现其compare方法,根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数来判断大小。
     强行对某个对象 collection 进行整体排序 的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。
Java代码  收藏代码

   1. import java.util.Comparator; 
   2.  
   3. public class MyCompare implements Comparator<Object>{ 
   4.      
   5.     public int compare(Object o0, Object o1) { 
   6.         UserPo user0 = (UserPo) o0; 
   7.         UserPo user1 = (UserPo) o1; 
   8.         if (user0.getAge() > user1.getAge()) { 
   9.             return 1; // 第一个大于第二个 
  10.         } else if (user0.getAge() < user1.getAge()) { 
  11.             return -1;// 第一个小于第二个 
  12.         } else { 
  13.             return 0; // 等于 
  14.         } 
  15.     } 
  16. } 

import java.util.Comparator;

public class MyCompare implements Comparator<Object>{

public int compare(Object o0, Object o1) {
UserPo user0 = (UserPo) o0;
UserPo user1 = (UserPo) o1;
if (user0.getAge() > user1.getAge()) {
return 1; // 第一个大于第二个
} else if (user0.getAge() < user1.getAge()) {
return -1;// 第一个小于第二个
} else {
return 0; // 等于
}
}
}



测试代码:
Java代码  收藏代码

   1. import java.util.ArrayList; 
   2. import java.util.Collections; 
   3.  
   4. public class Test { 
   5.  
   6.     public static void main(String args[]){ 
   7.          
   8.         String sql="select name,age from users"; 
   9.         // 从数据库中得到数据并组装对象集合 
  10.         ArrayList<UserPo> array =BaseDao.getyAll(sql); 
  11.         MyCompare comp = new MyCompare(); 
  12.         // 执行排序方法 
  13.         Collections.sort(array,comp); 
  14.         for(UserPo p:array) { 
  15.             System.out.println(p.getName()+":"+p.getAge()); 
  16.         } 
  17.          
  18.     } 
  19. } 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics