这篇文章主要介绍了java如何根据List内对象的属性进行排序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
方法一:实现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());
}
}
}
运行结果
三、总结:两种方式写法和用法上的区别:
感谢你能够认真阅读完这篇文章,希望小编分享的“java如何根据List内对象的属性进行排序”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。