数组排序语法

(1)Java自带的排序方法

使用Arrays类的方法可对数组进行冒泡排序(java.util包下的类)

Arrays.sort(数组对象)方法对数组升序排列

使用Collections类可以定义排序的规则(比较器)

Collections.reverseOrder()方法:对规则进行反转

Arrays.sort(数组对象, Collections.reverseOrder())方法对数组降序排列

由于泛型的限制,使用此方法排序的数组对象不能为基本数据类型。

基本数据类型,要转换为对应的包装类。

(2)自定义排序

//新建一个比较器

Comparator<数组对象类型> comparator = new Comparator<数组对象类型>(){

​ @Override

//必须重载compare方法,说明比较的过程

public int compare(数组对象类型 o1, 数组对象类型 o2) {

说明:在冒泡排序中,每次需要比较两个对象的大小,o1和o2即为每一次排序比较时的对象,在此方法中通过return 1或return -1来声明,是否将两个对象互换位置。

if(o2排在o1前面的条件){

return 1; //表明o1和o2在比较时需要互换位置

​ }

else if(o1排在o2前面的条件){

return -1; //表明o1和o2在比较时不需要互换位置

​ }

return 0;

升序的规则:小的在前,大的在后。

if(o1的值比o2大){

return 1;

// o1比o2大,所以o2要排在o1的前面,需要换位置

​ }

else if(o1的值比o2小){

return -1;

// o1比o2小,所以o1要排在o2的前面,不需要换位置

字符串排序的规则:偷换概念

if(o1/o2.equal(“原来值”)){

​ o1/o2 = “替换值”

}

首先将字符串的排序规则变换成字符串排序的自然规则

例如扑克牌的排序

原来值2345678910JQKA
替换值23456789BCDEF

如上表所示,将10 J Q K A替换为B C D E F

然后直接return o1.compareTo (o2);即可

需要降序排列时,用下面的方法,用升序的逆序即为降序

Arrays.sort(数组对象, comparator);

//按照上面构造的解释器进行排序

Arrays.sort(数组对象,Collections.reverseOrder(comparator));

//按照上面构造的解释器进行逆向排序

(3)多国语言字符串排序

Arrays.sort(数组对象,Collator.getInstance(Locale.CHINA));

//此种方法调用了系统定义好的中文排序器,对带中文字符串进行排序,在Locale中还有很多其他国家的排序器。

注意:在中文排序中,系统无法对于多音字进行区分。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值