tip:关于Java中的sort函数

文章介绍了如何使用Java中的Arrays.sort和Collections.sort方法对数组和Vector进行排序,包括基本类型数组的升序和降序排序,以及自定义对象属性的排序。同时,文章提供了示例代码展示如何创建Comparator来实现自定义比较规则。
摘要由CSDN通过智能技术生成

观摩 http://blog.csdn.net/u012250875/article/details/55126531后,找到一种比较简单的写法

1:Arrays.sort(int a[])

只需要传入一个数组参数,即可按从小到大排序

import java.util.*;
import java.util.Arrays;

public class Main
{
    public static void main(String [] args)
    {
      int a[] = {3,5,6,7,2,1};
      Arrays.sort(a);
      for(int i =0;i<6;i++)
      System.out.print(a[i] +  " ");
    }
}
输出结果为:1 2 3 5 6 7

2://如果要降序,需要在数组后加上Collections.reverseOrder()且将int 改为Integer

Arrays.sort(a,Collections.reverseOrder());

import java.util.*;
import java.util.Arrays;

public class Main
{
    public static void main(String [] args)
    {
      Integer a[] = {3,5,6,7,2,1};//int 改为Integer
      Arrays.sort(a,Collections.reverseOrder());//如果要降序,只需要在数组后加上Collections.reverseOrder()
      for(int i =0;i<6;i++)
      System.out.print(a[i] +  " ");
    }
}

这是一般数组的排序,那么如果是类中某个属性的比较呢?那就需要传入一个比较器参数

Arrays.sort(a,new Comparator<Cust>() {});

import java.util.*;
import java.util.Arrays;
public class Main
{
    public static void main(String [] args)
    {
        Cust a[] = new Cust[3];
        a[0] = new Cust();
        a[1] = new Cust();
        a[2] = new Cust();
        a[0].money = 3;
        a[1].money = 5;
        a[2].money = 1;
        Arrays.sort(a,new Comparator<Cust>()//传入 new Comparator<Object>()  <>里放对象类名
      {
          @Override
          public int compare(Cust b, Cust c)
          {
              return b.money - c.money;//升序排列,若要降序改为c.money - b.money即可
          }
          
      });
      
      for(int i =0;i<3;i++)
      System.out.print(a[i].money +  " ");
    }
}
class Cust
{
    int money;
    
}
输出 :1 3 5

若是Vector动态数组呢,将Arrays改为Collections即可

Collections.sort(a,new Comparator<Cust>() {});

import java.util.*;
import java.util.Arrays;
public class Main
{
    public static void main(String [] args)
    {
        Vector a = new Vector();
        a.add(new Cust(1));
        a.add(new Cust(3));
        a.add(new Cust(5));
        Collections.sort(a,new Comparator<Cust>()//传入 new Comparator<Object>()  <>里放对象类名
      {
          @Override
          public int compare(Cust b, Cust c)
          {
              return b.money - c.money;//升序排列,若要降序改为c.money - b.money即可
          }
          
      });
      
      for(int i =0;i<3;i++)
      {
          Cust tmp = (Cust)a.get(i);
          System.out.print(tmp.money +  " ");
      }
    }
}
class Cust
{
    int money;
    Cust()
    {
    }
    Cust(int money)
    {
        this.money = money;
    }
    
}
输出:1 3 5

银行程序在对用户金额排序时用到的做法:

@SuppressWarnings("unchecked")//可以不加
    void sortCustomer(Vector st)//st数组为存放客户的数组
    {
        Collections.sort(st,new Comparator<Cust>()//利用sort函数,传入一个比较器参数
            {
            @Override//重写compare
            public int compare(Cust o1,Cust o2)
            {
                return (int)(o1.m - o2.m);//由于m是double类型,而comparator要求必须返回int类型,故强制转换
            }
            
            });
        for(int i =0 ;i < st.size();i++)
        {
            Cust tmp = (Cust) st.get(i);
            System.out.println(tmp.name + " ");//按姓名输出金额排名
        }
        System.out.println();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值