Java期末复习-排序+包装类型

https://cloud.tencent.com/developer/article/1410680

一、基本数据类型:

二、引用类型:

2.1内置引用类型(String,Integer…),内部已经指定规则,直接使用即可。----实现Comparable接口
    1. 整数、 Integer…:根据基本数据类型大小

2. Character(字符):根据Unicode编码顺序

3. String(字符串):

1)如果其中一个是另一个起始开始的子串,返回长度之差,

2)否则返回第一个不相等的Unicode之差。

4. 日期:根据日期的长整型数比较。

2.2自定义引用类型,需要按照业务规则排序。

内置排序方式

现成的库函数Arrays.sort(数组名) ,默认升序
其他数组排序方式参考https://www.cnblogs.com/gqdw/p/14085176.html

降序:
参考http://c.biancheng.net/view/925.html

1)利用 Collections.reverseOrder() 方法
Arrays.sort(a, Collections.reverseOrder());

2)实现 Comparator 接口的复写 compare() 方法

public class Test {
    public static void main(String[] args) {
        /*
         * 注意,要想改变默认的排列顺序,不能使用基本类型(int,double,char)而要使用它们对应的类
         */
        Integer[] a = { 9, 8, 7, 2, 3, 4, 1, 0, 6, 5 };
        // 定义一个自定义类MyComparator的对象
        Comparator cmp = new MyComparator();
        Arrays.sort(a, cmp);
        for (int arr : a) {
            System.out.print(arr + " ");
        }
    }
}

// 实现Comparator接口
class MyComparator implements Comparator<Integer> {
    @Override
    public int compare(Integer o1, Integer o2) {
        /***加粗样式**
         * 如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值, 这样颠倒一下,就可以实现降序排序了,反之即可自定义升序排序了
         */
        return o2 - o1;
    }
}

注意:上述两种方法要求数据类型为包装类(见文末)

当引用类型的内置排序方式无法满足需求时可以自己实现满足既定要求的排序,有两种方式:
第一种: 自定义业务排序类:新建一个业务排序类实现java.util.Comparator 下的compare 接口,然后使用java提供的Collections调用排序方法,并将此业务排序类作为参数传递给Collections的sort方法
Collections.sort(list,new GoodsPriceCompare());

第二种:实体类实现 java.lang.Comparable下的compareTo接口,在接口中实现满足需求的,然后使用java提供的Collections调用排序方法sort,会自动调用此时实现的接口方法。
Collections.sort(news);

1、comparable的compareTo,让某个类实现接口,重写方法
2、comparator的compare,单独使用类实现接口,使用时创建对象作为参数
2.1仅重写方法,没有单独使用类,不清楚该怎么调用方法orz,可能是调用方法哈哈哈
3、同2,只是使用了内部类
4、边排序边创建类?
5、
5.1lambda表达式
5.2不太懂,lambda表达式创建变量可能是
6、构建方法,可以使用compareTo方法,但不是重写compareTo方法
7、comparing
参考https://my.oschina.net/xinxingegeya/blog/2046405

包装类型
https://www.liaoxuefeng.com/wiki/1252599548343744/1260473794166400

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值