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());
 }
}

}

运行结果:

java根据List内对象的属性排序方法

方法二:实现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());
 }
}

}

运行结果

java根据List内对象的属性排序方法

三、总结:两种方式写法和用法上的区别:

java根据List内对象的属性排序方法

来源: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
  • asp之家 软件编程 m.aspxhome.com