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

网友投稿 371 2023-03-01


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

方法一:实现Comparator接口,并重写compare方法

实体类代码:

import java.util.Comparator;

/**

* 学生类 方法一

* 实现Comparator接口

* 并重写compare方法

* @author liaot

*

*/

public class Student implements Comparator{

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 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 {

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 stuList = new ArrayList<>();

stuList.add(stu1);

stuList.add(stu2);

stuList.add(stu3);

stuList.add(stu4);

System.out.println("排序前:=====");

for(SrOlPTBGutudent2 stu :stuList){

System.out.println("姓名:"+stu.getName() +" 年龄"+stu.getAge());

}

//排序

CollectionrOlPTBGus.sort(stuList); //只有一个参数参数为List

System.out.println("排序后:=====");

for(Student2 stu :stuList){

System.out.println("姓名:"+stu.getName() +" 年龄"+stu.getAge());

}

}

}

运行结果

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口开发流程(数据接口开发流程)
下一篇:spring boot 集成shiro的配置方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~