数组自定义排序、泛型

我们使用过数组,如

String[] strs = {"xxx","aaa","kkkk"}

使用sort()方法对数组排序:

Arrays.sort(strs);

遍历:

for (String s : strs){
  System.out.println(s);
}

sort()默认排序:如果是字符串默认安装字母从a-z,如果是数字默认从小到大。

sort方法的第2个参数

Arrays.sort(strs,第2个参数)
#第二个参数,可以传入一个类,来实现自定义排序,比如:按照数组元素长度排序

1、我们首先得写一个实现Comparator的类

import java.util.Comparator;

public class MyCompare implements Comparator {
    @Override
    public int compare(Object o1, Object o2) {
        String a = (String)o1;
        String b = (String)o2;
        if (a.length() > b.length()){
            return 1;
        }else if (a.length() < b.length()){
            return -1;
        }
        return 0;
    }
}

从上面代码可以,看出我们进行了长度的比较。

2、现在来看Arrays.sort方法如何使用到这个类:

        // 数组
        String[] names = {"zhangsan","lisi","wangwu","hanmeimei"};

        // 排序
        Arrays.sort(names, new MyCompare());

        // 遍历输出
        for (String s : names){
            System.out.println(s);
        }

打印结果如下:

lisi
wangwu
zhangsan
hanmeimei

说明长度最小的排在了前面。
如果要长度最大的排在前面,我们只需要修改MyCompare这个类的compare方法:

    @Override
    public int compare(Object o1, Object o2) {
        String a = (String)o1;
        String b = (String)o2;
        if (a.length() > b.length()){
            return -1;
        }else if (a.length() < b.length()){
            return 1;
        }
        return 0;
    }

泛型的概念

这里写图片描述
上面我们在进行数组自定义排序的时候,其实IDE对我们已经进行了一个提示。这是告诉我们传进去的数据类型应该是一个泛型。

我们把MyCompare类改造一下:

public class MyCompare implements Comparator <String> {
    @Override
    public int compare(String o1, String o2) {
        if (o1.length() > o1.length()){
            return -1;
        }else if (o1.length() < o2.length()){
            return 1;
        }
        return 0;
    }
}

这样要求传的就是String类型,我们就不必再转为String了。
在使用这个类对数组进行排序的时候,IDE也不会有”黄色”提示了。

// 排序
Arrays.sort(names, new MyCompare());

这里,我们只是初步接触泛型这个概念

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值