java根据List内对象的属性排序方法
作者:Clannad_汐 时间:2022-10-25 10:05:44
方法一:实现Comparator接口,并重写compare方法
实体类代码:
import java.util.Comparator;
/**
* 学生类 方法一
* 实现Comparator接口
* 并重写compare方法
* @author liaot
*
*/
public class Student implements Comparator<Student>{
private String name; //姓名
private int age; //年龄
//重写 比较方法 本次例子定义为按年龄比较
@Override
public int compare(Student o1, Student o2) {
if(o1.getAge() > o2.getAge()){
return 1;
}else{
return -1;
}
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
测试类:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
//初始化四个不同的学生
Student stu1 = new Student("路人甲", 20);
Student stu2 = new Student("路人已", 18);
Student stu3 = new Student("路人丙", 16);
Student stu4 = new Student("路人丁", 19);
//新建List把学生加进List
List<Student> stuList = new ArrayList<>();
stuList.add(stu1);
stuList.add(stu2);
stuList.add(stu3);
stuList.add(stu4);
System.out.println("排序前:=====");
for(Student stu :stuList){
System.out.println("姓名:"+stu.getName() +" 年龄"+stu.getAge());
}
//排序
Collections.sort(stuList, stu1); //第一个参数为List 第二个参数为对象的一个实例
System.out.println("排序后:=====");
for(Student stu :stuList){
System.out.println("姓名:"+stu.getName() +" 年龄"+stu.getAge());
}
}
}
运行结果:
方法二:实现Comparable接口 并重写compareTo方法
/**
* 学生类 方法二 实现Comparable接口 并重写compareTo方法
*
* @author liaot
*
*/
public class Student2 implements Comparable<Student2> {
private String name; // 姓名
private int age; // 年龄
// 重写 比较方法 本次例子定义为按年龄比较
@Override
public int compareTo(Student2 stu) {
if (this.age > stu.getAge()) {
return 1;
} else {
return -1;
}
}
public Student2(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
测试类
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main2 {
public static void main(String[] args) {
//初始化四个不同的学生
Student2 stu1 = new Student2("路人甲", 20);
Student2 stu2 = new Student2("路人已", 18);
Student2 stu3 = new Student2("路人丙", 16);
Student2 stu4 = new Student2("路人丁", 19);
//新建List把学生加进List
List<Student2> stuList = new ArrayList<>();
stuList.add(stu1);
stuList.add(stu2);
stuList.add(stu3);
stuList.add(stu4);
System.out.println("排序前:=====");
for(Student2 stu :stuList){
System.out.println("姓名:"+stu.getName() +" 年龄"+stu.getAge());
}
//排序
Collections.sort(stuList); //只有一个参数参数为List
System.out.println("排序后:=====");
for(Student2 stu :stuList){
System.out.println("姓名:"+stu.getName() +" 年龄"+stu.getAge());
}
}
}
运行结果
三、总结:两种方式写法和用法上的区别:
来源:http://blog.csdn.net/c1481118216/article/details/53496083
标签:java,List,内对象,属性,排序
0
投稿
猜你喜欢
Spring boot热部署devtools过程解析
2022-06-21 13:12:09
Java高级面试题小结
2023-11-23 07:34:00
详解Java中类的加载与其初始化
2023-06-21 04:56:45
spring boot加载第三方jar包的配置文件的方法
2023-03-02 22:45:13
详解Mybatis极其(最)简(好)单(用)的一个分页插件
2021-09-25 03:00:35
Java 基于tcp协议实现文件上传
2022-04-14 04:01:29
spring boot集成smart-doc自动生成接口文档详解
2023-11-28 23:08:02
Java项目开发中实现分页的三种方式总结
2021-08-25 21:36:36
Java 归并排序算法、堆排序算法实例详解
2023-11-25 09:43:25
Java超详细分析@Autowired原理
2023-11-25 05:37:44
Android SharedPreferences存储用法详解
2023-08-07 08:25:34
关于线程池你不得不知道的一些设置
2021-06-08 11:34:45
java使用ffmpeg处理视频的方法
2023-07-28 22:58:08
Java网络编程之简易聊天室的实现
2022-05-05 22:23:45
spring data jpa使用详解(推荐)
2022-06-19 05:22:17
java实现读取、删除文件夹下的文件
2021-12-06 20:07:48
Springboot项目引入druid安装部署使用教程
2023-07-28 01:39:25
一篇文章带你入门Java Script
2023-09-12 06:09:24
Linux下Java开发环境搭建以及第一个HelloWorld
2023-11-06 01:09:57
springboot docker jenkins 自动化部署并上传镜像的步骤详解
2023-07-28 01:54:38