java Comparator.comparing排序使用示例

网友投稿 383 2022-09-21


java Comparator.comparing排序使用示例

目录背景实体类示例一示例二

背景

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

实体类

import lombok.Data;

/**

* @Author: ck

* @Date: 2021/10/12 3:51 下午

*/

@Data

public class Model {

private String name;

private int age;

}

示例一

通过实现Comparator接口来进行排序,代码相对较复杂

Collections.sort(models, new Comparator() {

@Override

public int compare(String o1, String o2) {mKtSWTq

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 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() + " " + comKtSWTqntract.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());

}

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【IT技术分享】思科CCNA/CCNP/CCIE 思科策略路由PBR详解(思科it信息维护)
下一篇:记一次网络中断故障处理(网络总中断)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~