Collections容器的排序方法

     首先我们需要明白什么是通用容器.通用容器是包含和组织对象集合的数据结构,可以存储任何数据类型的数据,并且这些容器在不同的应用程序中都是可以重用的.如数组、表、堆栈、集合、树和哈稀表等。容器有很多用处,在java.util.Collections类中,它提供了许多处理容器问题的方法,其中最为常用的是其排序sort()方法和用于检索的折半查找法binarySearch(),还有一些其他的方法。其中只有Max()和Min()方法是所有的容器都能使用的方法,除了这两个之外的方法,都只能用列表处理。

   下面的一个小程序实现了对数组的升序排序和降序排序功能。事先给定一个int型数组,并对其赋值,要求将其元素按升序和降序输出。由于容器的sort()方法只能处理列表对象,所以需要事先将其转换为列表。这期间需要用到Interger类,因为它可以实现int型数据象Integer数据的转换,否则会报错ava.lang.ClassCastException:。

  代码如下:

import java.util.*;

public class SortTest {
 public static void main(String[] args){
  
  int[] a={1,2,-5,6,-88,45,6845,0,685};
  int len=a.length;
  Integer[] ab=new Integer[len];//Integer类封装了int型字段.其对象可以实现int和string的相互转化,以利于将数组转化为列表的操作
     for(int i=0;i<len;i++)
     {
       ab[i]=a[i]; //将原始数组值赋给新数组.
     }
     List abList=Arrays.asList(ab);//将数组转化为列表
    
     /**Arrays类包含了各种处理数组的方法,如排序和查找,也包含了将数组转化为列表的功能(lists),如Arrays.asList(ab);
      * 之所以需要将其转化为列表,是Collections容器只能对列表对象进行排序.
      * */
    
    
  //sort as ascend
     Collections.sort(abList);//根据元素的自然顺序 对指定列表按升序进行排序
     System.out.println("Ascend Order is:");
     for(int i=0;i<len;i++){
      System.out.println(ab[i]);//打印升序后的列表
     }
    
     //sort as descend
     Comparator c=new ReverseCompare();//创建比较器对象
     Collections.sort(abList,c);//根据指定比较器产生的顺序对指定列表进行排序。
     System.out.println("Descend Order is:");
     for(int i=0;i<len;i++){
      System.out.println(ab[i]);//打印经降序后的列表
     }
       
 }
  
 //构建比较器类
    static class ReverseCompare implements Comparator{
     public int compare(Object i,Object j)
     {
      Integer bj=(Integer)j;Integer ai=(Integer)i;//强制类型转换
      return bj.compareTo(ai);
     }

  
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值