java根據(jù)List內(nèi)對(duì)象的屬性排序方法
方法一:實(shí)現(xiàn)Comparator接口,并重寫(xiě)compare方法
實(shí)體類(lèi)代碼:
import java.util.Comparator;
/**
* 學(xué)生類(lèi) 方法一
* 實(shí)現(xiàn)Comparator接口
* 并重寫(xiě)compare方法
* @author liaot
*
*/
public class Student implements Comparator<Student>{
private String name; //姓名
private int age; //年齡
//重寫(xiě) 比較方法 本次例子定義為按年齡比較
@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;
}
}
測(cè)試類(lèi):
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
//初始化四個(gè)不同的學(xué)生
Student stu1 = new Student("路人甲", 20);
Student stu2 = new Student("路人已", 18);
Student stu3 = new Student("路人丙", 16);
Student stu4 = new Student("路人丁", 19);
//新建List把學(xué)生加進(jìn)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); //第一個(gè)參數(shù)為L(zhǎng)ist 第二個(gè)參數(shù)為對(duì)象的一個(gè)實(shí)例
System.out.println("排序后:=====");
for(Student stu :stuList){
System.out.println("姓名:"+stu.getName() +" 年齡"+stu.getAge());
}
}
}
運(yùn)行結(jié)果:

方法二:實(shí)現(xiàn)Comparable接口 并重寫(xiě)compareTo方法
/**
* 學(xué)生類(lèi) 方法二 實(shí)現(xiàn)Comparable接口 并重寫(xiě)compareTo方法
*
* @author liaot
*
*/
public class Student2 implements Comparable<Student2> {
private String name; // 姓名
private int age; // 年齡
// 重寫(xiě) 比較方法 本次例子定義為按年齡比較
@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;
}
}
測(cè)試類(lèi)
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main2 {
public static void main(String[] args) {
//初始化四個(gè)不同的學(xué)生
Student2 stu1 = new Student2("路人甲", 20);
Student2 stu2 = new Student2("路人已", 18);
Student2 stu3 = new Student2("路人丙", 16);
Student2 stu4 = new Student2("路人丁", 19);
//新建List把學(xué)生加進(jìn)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); //只有一個(gè)參數(shù)參數(shù)為L(zhǎng)ist
System.out.println("排序后:=====");
for(Student2 stu :stuList){
System.out.println("姓名:"+stu.getName() +" 年齡"+stu.getAge());
}
}
}
運(yùn)行結(jié)果

三、總結(jié):兩種方式寫(xiě)法和用法上的區(qū)別:

以上這篇java根據(jù)List內(nèi)對(duì)象的屬性排序方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于logBack配置日志文件及編碼配置的問(wèn)題
這篇文章主要介紹了logBack配置日志文件及編碼配置的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Spring?Retry實(shí)現(xiàn)重試機(jī)制的示例詳解
這篇文章主要為大家詳細(xì)介紹了Spring-Retry的用法以及實(shí)現(xiàn)原理是怎么樣的,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以了解一下2023-07-07
java多線(xiàn)程之CyclicBarrier的使用方法
這篇文章主要介紹了java多線(xiàn)程之CyclicBarrier的使用方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10
Java動(dòng)態(tài)代理Proxy應(yīng)用和底層源碼詳細(xì)分析
Java動(dòng)態(tài)代理是一種在運(yùn)行時(shí)生成代理類(lèi)的機(jī)制,用于代替手動(dòng)編寫(xiě)代理類(lèi)的過(guò)程,這篇文章主要給大家介紹了關(guān)于Java動(dòng)態(tài)代理Proxy應(yīng)用和底層源碼詳細(xì)分析的相關(guān)資料,需要的朋友可以參考下2024-03-03
java數(shù)據(jù)類(lèi)型和運(yùn)算符的深入講解
這篇文章主要給大家介紹了關(guān)于java數(shù)據(jù)類(lèi)型和運(yùn)算符的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
DecimalFormat數(shù)字格式化 0和# 的區(qū)別及說(shuō)明
這篇文章主要介紹了DecimalFormat數(shù)字格式化 0和# 的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
Java 創(chuàng)建URL的常見(jiàn)問(wèn)題及解決方案
這篇文章主要介紹了Java 創(chuàng)建URL的常見(jiàn)問(wèn)題及解決方案的相關(guān)資料,需要的朋友可以參考下2016-10-10

