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. CF922D Robot Vacuum Cleaner 贪心+排序

    正确的贪心方法:按照比例排序. code: #include <bits/stdc++.h> #define N 200000 #define ll long long #define s ...

  2. MySQL区间检索

    在没有前端的情况下,自己写一些搜索逻辑,可能不太完善,不过功能完成了 //区间检索的判定 private String columnTextTranslateRegion(String columnT ...

  3. [CQOI2016]手机号码 数位DP

    [CQOI2016]手机号码 用来数位DP入门,数位DP把当前是否需要限制取数范围(是否正在贴着临界值跑,即下面的limited)和一切需要满足的条件全部塞进记忆化搜索参数里面就好了,具体情况转移便好 ...

  4. 畅通工程续(HDU 1874)(简单最短路)

    某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰. 现在 ...

  5. Win10配置Java环境变量

    很多同学在学习Java入门的时候被Java环境变量搞的一头雾水,今天这篇文章拓薪教育就来说一下如何在win10下配置环境变量; 下载jdk安装包: 首先我们需要下载jdk的安装包,这里提供jdk的安装 ...

  6. c语言 数组类型

    数组类型重命名数组类型由元素类型和数组大小共同决定数组指针是一个指针,只想对应类型的数组指针数组是一个数组,其中每个元素都是指针数组指针遵循指针运算法则指针数组拥有c语言数组的各种特性 c通过type ...

  7. POI的XWPFTable的方法总结

    1. void  addNewCol(): 为该表中的每一行添加一个新列 2. void addRow(XWPFTableRow row): 向表中添加新行 3. boolean addRow(XWP ...

  8. 异步机制 - APC

    APC : An asynchronous procedure call,异步过程调用,是微软提供的一种在线程上下文中执行代码的机制.当向一个线程插入一个USER APC时,如果线程进入alertab ...

  9. brew 切换国内的源

    切换到国内源 # 替换brew.git: cd "$(brew --repo)" # 中国科大: git remote set-url origin https://mirrors ...

  10. 阿里云上搭建git

    这篇文章我就来介绍一下如何在一台全裸的阿里云主机上搭建自己的git服务器. 1. 安装git 首先安装git,一般而言,现在的服务器已经内置了git安装包,我们只需要执行简单的安装命令即可安装.比如: ...