1、首先新建测试的实体类(People类):

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString; @Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class People {
private Integer id;
private String name;
private Integer age;
}

2、开始测试,代码如下:

方式一:使用Collections工具类的静态方法sort(List<People> list, Comparator<? super People> c)

其中,参数1:排序的List集合, 参数2:Comparator接口的子实现(需要重写compare方法来指定排序方式)

import com.jieku.pojo.People;
import org.junit.Test; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; public class TestList { @Test
public void testSortList(){
People p1 = new People(101,"a",19); // 准备数据
People p2 = new People(103,"c",13);
People p3 = new People(102,"b",14);
People p4 = new People(104,"d",15);
People p5 = new People(105,"d",15);
List<People> ps = new ArrayList<>(); // 新建List
ps.add(p1); // 往List中放值
ps.add(p2);
ps.add(p3);
ps.add(p4);
ps.add(p5);
System.out.println("没有进行年龄排序前:");
for (People p : ps) {
System.out.println(p);
}
// 使用Collections工具类的sort方法,重写其compare方法
Collections.sort(ps, new Comparator<People>() {
@Override
public int compare(People o1, People o2) {
// -1为正序(从大到小)
// 1为倒序(从小到大)
// 大的在前
if(o1.getAge() > o2.getAge()){ // 如果o1的年龄比o2大,则o1排前面
return -1;
}else if(o1.getAge() == o2.getAge()){
return 0;
}else{ // 小的在后
return 1;
}
}
});
System.out.println("按照年龄排序后----------------------");
for (People p : ps) {
System.out.println(p);
}
System.out.println("按照编号排序后---------------------使用lambda");
Collections.sort(ps, (o1, o2) -> {
// 按照id的正序
if(o1.getId() > o2.getId()){ // id大的排最后
return 1;
}else if(o1.getId() == o2.getId()){
return 0;
}else{ // 否则,id小的排最前面
return -1;
}
});
// 打印排序后的结果
for (People p : ps) {
System.out.println(p);
}
}
}

3、测试结果如下:

方拾二:通过实体类实现Comparable<T>接口,并且实现未实现的方法compareTo(T t),定义其比较规则,然后再通过Collections工具类的sort方法即可实现排序。

实体类的代码如下:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString; @Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Dog implements Comparable<Dog>{
private Integer id;
private String name;
private Integer age; @Override
public int compareTo(Dog o) {
return this.getAge() - o.getAge();
}
}

测试类的代码如下:

@Test
public void testSortList3(){
Dog p1 = new Dog(101,"a",19); // 准备数据
Dog p2 = new Dog(103,"c",13);
Dog p3 = new Dog(102,"b",14);
Dog p4 = new Dog(104,"d",15);
Dog p5 = new Dog(105,"d",15);
List<Dog> ps = new ArrayList<>(); // 新建List
ps.add(p1); // 往List中放值
ps.add(p2);
ps.add(p3);
ps.add(p4);
ps.add(p5);
System.out.println("没有进行年龄排序前:");
for (Dog p : ps) {
System.out.println(p);
}
System.out.println("----------------排序后----------------------");
// 直接使用工具类的sort的方法
Collections.sort(ps);
for (Dog p : ps) {
System.out.println(p);
}
}

执行结果如下:

至此,测试完成!

java实现List<People>的排序的更多相关文章

  1. java提供的默认list排序方法-转

    1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...

  2. java Collections.sort()实现List排序的默认方法和自定义方法

    1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...

  3. Java版冒泡排序和选择排序

    一.理解说明 1.理解和记忆 冒泡排序:依次定位数组元素,每次只和相邻的且符合条件的元素交换位置. 选择排序:依次在数组的每个位置,通过逐个对比选择出最大或最小的元素. 2.知识点说明 (1)数组是引 ...

  4. Java数据结构和算法 - 简单排序

    Q: 冒泡排序? A: 1) 比较相邻的元素.如果第一个比第二个大,就交换它们两个; 2) 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数; 3) 针 ...

  5. Java基础复习笔记基本排序算法

    Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...

  6. Java 中常见的各种排序算法汇总

    首先,Java中自已是有排序的 说明:(1)Arrays类中的sort()使用的是“经过调优的快速排序法”;(2)比如int[],double[],char[]等基数据类型的数组,Arrays类之只是 ...

  7. Java ArrayList中对象的排序 (Comparable VS Comparator)

    我们通常使用Collections.sort()方法来对一个简单的数据列表排序.但是当ArrayList是由自定义对象组成的,就需要使用comparable或者comparator接口了.在使用这两者 ...

  8. Java实现:数据结构之排序

    Java实现:数据结构之排序 0.概述 形式化定义:假设有n个记录的序列(待排序列)为{ R1, R2 , -, Rn },其相应的关键字序列为 { K1, K2, -, Kn }.找到{1,2, - ...

  9. java Collections.sort()实现List排序的默认方法和自定义方法【转】

    1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...

  10. JAVA通过使用sort方法排序

    java 代码: 对集合排序: //升序public void listSort1(){ List<Integer> list = new ArrayList<Integer> ...

随机推荐

  1. Oracle 物理结构(六) 文件-数据文件

    Oracle 物理结构(六) 文件-数据文件

  2. 五十九.大数据、Hadoop 、 Hadoop安装与配置 、 HDFS

    1.安装Hadoop 单机模式安装Hadoop 安装JAVA环境 设置环境变量,启动运行   1.1 环境准备   1)配置主机名为nn01,ip为192.168.1.21,配置yum源(系统源) 备 ...

  3. learning express step(一)

    first : create new project then install express package : npm install express --savenpm WARN saveErr ...

  4. mkdir/rmdir/install/mktemp

    mkdir rmdir很有趣,如果加上p选项,如果删除空目录后,其父目录是空,则一并删除,所以如果都是空的,那么就会全家删 a用户不能修改b用户的文件,但是却可以删除 install 创建文件并赋权 ...

  5. xpath简介备查

    xpath简介 xpath 使用路径表达式在xml和html中进行导航 xpath包含标准函数库 xpath是一个w3c的标准 xpath节点关系 父节点 子节点 同袍节点 先辈节点 后代节点 xpa ...

  6. vue-cli3运行本地项目后,端口不随设置的随便变化

    今天群里有个端友说到了这个,没当回事,devserver中虽然设置了端口,但是启动本地项目后,端口还是随便更换,网上回去初始化了一下项目,结果也遇到这情况了,刚好,我们只需要 npm install ...

  7. Linux设备驱动程序 之 kmalloc

    原型 kmalloc的原型如下: void *kmalloc(size_t size, gfp_t flags) 第一个参数是要分配的块的大小,第二个参数是分片标志: flags标志 最常用的标志是G ...

  8. sh: 1: Syntax error: Bad fd number

    Start on Ubuntu 6.10,Using dash default(theDebian Almquist Shell) instead bash(the GNUBourne-Again S ...

  9. 美国top200药品2

     python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  10. 在调试linux的休眠功能时如何打开调试信息开关?

    答:在bootargs中添加参数no_console_suspend即可进行调试