Comparator.comparing排序应用示例

[TOC]

背景

以前罕用的排序形式是通过实现Comparator接口来进行排序,写法相对来说比较复杂,应用Comparator.comparing能够简化代码,看起来逻辑更清晰。

实体类

import lombok.Data;/** * @Author: ck * @Date: 2021/10/12 3:51 下午 */@Datapublic class Model {    private String name;    private int age;}

示例一

通过实现Comparator接口来进行排序,代码绝对较简单
Collections.sort(models, new Comparator<String>() {    @Override    public int compare(String o1, String o2) {        return o1.compareTo(o2);    }});

示例二

应用Comparator.comparing实现排序,同样能够指定依照哪个属性排序,且能够实现倒序。
package com.kaesar.java_common;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** * Comparator.comparing 办法的应用 * * @Author: ck * @Date: 2021/10/12 3:51 下午 */public class ComparatorTest {    public static void main(String[] args) {        List<Model> models = new ArrayList<>();        Model model1 = new Model();        model1.setAge(300);        model1.setName("a");        models.add(model1);        Model model2 = new Model();        model2.setAge(500);        model2.setName("c");        models.add(model2);        Model model3 = new Model();        model3.setAge(100);        model3.setName("b");        models.add(model3);        System.out.println("-----排序前-----");        // 排序前        for (Model contract : models) {            System.out.println(contract.getName() + " " + contract.getAge());        }        System.out.println("-----排序后,依据age排序-----");        Collections.sort(models, Comparator.comparing(Model::getAge));        // 排序后        for (Model model : models) {            System.out.println(model.getName() + " " + model.getAge());        }        System.out.println("-----排序后,依据age排倒序-----");        Collections.sort(models, Comparator.comparing(Model::getAge).reversed());        // 排序后        for (Model model : models) {            System.out.println(model.getName() + " " + model.getAge());        }        System.out.println("-----排序后,依据name排序-----");        Collections.sort(models, Comparator.comparing(Model::getName));        // 排序后        for (Model model : models) {            System.out.println(model.getName() + " " + model.getAge());        }    }}
$1.01^{365} ≈ 37.7834343329$
$0.99^{365} ≈ 0.02551796445$
置信保持的力量!