java Comparator.comparing排序使用示例
作者:雄狮虎豹 发布时间:2021-07-23 16:01:59
标签: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<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());
}
}
}
来源:https://blog.csdn.net/a502165083/article/details/120856749
0
投稿
猜你喜欢
- try catch finally组合:检测异常,并传递给catch处理,并在finally中进行资源释放。try catch组合 : 对代
- 开放端口安全组没开放端口是原罪!!!导致好多BUG费时费力。Hbase悄悄 * 的用了好多端口,比如被我抓到的42239,直接搜索报错药不对症
- 首先struts上传最大大小由两个地方决定. · struts.multipart.maxSize决定整个post的form最大是
- 在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文件
- 前言继承是面向对象语法的三大特征之一。继承可以降低代码编写的冗余度,提高编程的效率。通过继承,子类获得了父类的成员变量和方法。一个子类如何继
- 简述mysq5.7之后新增了json类型,但是在使用的过程中,Json数组中的值小于Integer.MAX_VALUE,则反序列化时会转成L
- 一、OutputStreamWriter流 API说明:OutputStreamWriter是从字符流到
- @pathvariable与@requestparam碰到的一些问题一、@pathvariable可以将 URL 中占位符参数绑定到控制器处
- 本文实例为大家分享了利用多线程和Socket实现猜拳游戏的具体代码,供大家参考,具体内容如下实例:猜拳游戏猜拳游戏是指小时候玩的石头、剪刀、
- 在项目中经常要用到将字符串解析成Locale,但是没有一个比较好用的类。java本身提供了3个构造函数,但是实际使用过程中,需要自己解析,比
- @Autowired注解注入的xxxMapper报错项目场景Mybatis-Plus测试问题描述在Mybatis-Plus场景的测试中发现,
- 1、接口:一种把类抽象的更彻底,接口里只能包含抽象方法的“特殊类”。接口不关心类的内部状态数据,定义的是一批类所遵守的规范。(它只规定这批类
- 本文是Neward & Associates的总裁Ted Neward为developerworks独家撰稿“你不知道5个……”系列
- 突然心血来潮,想自己做个小程序玩玩,但是怎么把他做成一个exe文件,让大家能够更好的理解和使用呢,百度了一下,说是需要exe4j来生成,但是
- 什么是异步调用?异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等
- 执行如下的jni调用:package jni;public class JNITransObject { public nativ
- private void button1_Click(object sender, EventArgs e) {
- 什么是fescar?关于fescar的详细介绍,请参阅fescar wiki。传统的2PC提交协议,会持有一个全局性的锁,所有局部事务预提交
- 一、数组的基本用法1.什么是数组数组:存储一组相同数据类型的数据的集合。2.定义数组 int[] :int类型数组 do
- 首先当我们将Dwr3配置好以后,我们可以在浏览器中测试一下,查看一下我们配置的Dwr有没有生效,方法是http://localhost:[你