一、如何使用Collections工具类进行排序
使用Collections工具类进行排序主要有两种方式:
1.对象实现Comparable接口,重写compareTo方法
@Data
@AllArgsConstructor
public class Student implements Comparable {
String name;
int age;
@Override
public int compareTo(Object o) {
Student stu = (Student) o;
//this-参数:升序;参数-this:降序
return this.age - stu.age;
}
}
public class Test01 {
public static void main(String[] args) {
List stuList = new ArrayList<>();
stuList.add(new Student("abc", 17));
stuList.add(new Student("cab", 18));
Collections.sort(stuList);
System.out.println(stuList);
}
}
2.传入一个比较器对象Comparator。
还是用上面的student,不去实现Comparable接口。
public class Test02 {
public static void main(String[] args) {
List stuList = new ArrayList<>();
stuList.add(new Student("abc", 19));
stuList.add(new Student("cab", 18));
Collections.sort(stuList, new Comparator() {
@Override
public int compare(Student o1, Student o2) {
return o1.age - o2.age;
}
});
System.out.println(stuList);
}
}
二、依据多个字段排序
当需求要求先按第一个字段排序,如果第一个字段相同,则按第二个字段排序,如果第二个相同,则按第三个字段... 可以定义多个Comparator,并依次使用。
@Data
@AllArgsConstructor
public class Student {
// 编号
private String id;
// 身高
private int height;
// 体重
private int weight;
}
public class Test03 {
public static void main(String[] args) {
Student s1 = new Student("1", 180, 80);
Student s2 = new Student("2", 175, 80);
Student s3 = new Student("3", 175, 90);
List students = new ArrayList<>();
students.add(s1);
students.add(s2);
students.add(s3);
System.out.println("原始排序:" + students);
//按照身高升序排序
Comparator byHeight = Comparator.comparing(Student::getHeight);
//按照体重升序排序
Comparator byWeight = Comparator.comparing(Student::getWeight);
//将list先按照"身高"升序再按照"体重"升序排列
students.sort(byHeight.thenComparing(byWeight));
//将list先按照"身高"升序再按照"体重"升序排列
System.out.println("优先身高:" + students);
//将list先按照"体重"升序再按照"身高"升序排列
students.sort(byWeight.thenComparing(byHeight));
//将list先按照"身高"升序再按照"体重"升序排列
System.out.println("优先体重:" + students);
}
}
python 中的sort 和java中的Collections.sort()函数的使用
x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是 ...
Java中使用Collections.sort()方法对数字和字符串泛型的LIst进行排序
在List的排序中常用的是Collections.sort()方法,可以对String类型和Integer类型泛型的List集合进行排序. 首先演示sort()方法对Integer类型泛型的List排 ...
Java—集合框架 Collections.sort()、Comparable接口和Comparator接口
Collentions工具类--java.util.Collections Collentions是Java集合框架中,用来操作集合对象的工具类,也是Java集合框架的成员,与List.Map和Set ...
【Java】Java中的Collections类——Java中升级版的数据结构【转】
一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数 ...
Java中的Collections类
转载:https://blog.csdn.net/yangxingpa/article/details/80515963 从[Java]Java中的Collections类——Java中升级版的数据结 ...
java中List对象列表去重或取出以及排序
面试碰到几次list的去重和排序.下面介绍一种做法: 1. list去重 1.1 实体类Student List容量10k以上,要求去重复.这里Student的重复标准是 ...
java中的TreeMap如何顺序按照插入顺序排序
java中的TreeMap如何顺序按照插入顺序排序 你可以使用LinkedHashMap 这个是可以记住插入顺序的. 用LinkedHashMap吧.它内部有一个链表,保持插入的顺序.迭代的时候,也 ...
用Java集合中的Collections.sort方法对list排序的两种方法
用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
Java Collections.sort方法对list集合排序
1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java. ...
随机推荐
分组统计并计算每组数量sql
有 字段A 和B比如数据如下A B1 21 31 4 2 22 3 统计出的sql结果: A count 1 3 2 2 select a,count(b) from t gr ...
IOS下移除按钮原生样式 -webkit-appearance
IOS环境下的按钮都是经过美化的,但通常我们在设计web app的时候不需要这些看上去老土的样式,所以,去除这些显得很有必要. 下面这句代码就是重置这些样式的: -webkit-appearance: ...
excel的变量
因需要定制游戏的公式,公式是以一个系数乘以等级,我想达到修改系数,每个等级对应的值就立即显示出来, 但把系数写在一个单元格,一拉,系数单元格也会跟着增长行数--不是我想要的: 但只要把系数单元格改成变 ...
Unity3d ngui基础教程
Unity3d ngui基础教程 NGUI教程:步骤1-Scene 1.创建一个新的场景(New Scene).2.选择并删除场景里的MainCamera.3.在NGUI菜单下选择Create a N ...
android 屏幕适配1 ——dimens.xml的适配
1.如果是才开始做项目,已经有设计图:720*1280 1).默认values文件夹:1dp=1px values/dimens_x.xml: name: x1~x720 value:1px~72 ...
BZOJ2961 共点圆[CDQ分治]
题面 bzoj 其实就是推一下圆的式子 长成这个样子 假设要查询的点是(x, y) 某个圆心是(p, q) ((x - p)^2 + (y - q)^2 leq p^2 + q^2) 变成 ( ...
Python初学者第二十二天 函数进阶(1)
22day 1.函数命名空间: 2.函数作用域的查找顺序:LEGB locals->enclosing function ->globals ->_builtins_ a.local ...
高级选项更改MathType数学公式样式
MathType中系统的样式有很多种,我们将通过示例来演示如何更改样式定义达到修改等式的目的.使用样式将允许你迅速且方便的获得一种格式,这种格式将使你创建的等式具有统一的风格. 以下步骤中,我们将创建 ...
Maven Jetty插件使用