欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)ArrayList排序的方法詳解

 更新時(shí)間:2022年05月24日 16:42:20   作者:IT利刃出鞘  
Java中常見(jiàn)的ArrayList排序方法主要為三種:JDK8的stream、Comparator#compare()和Comparable#compareTo(),本文將詳解這三者的使用,需要的可以參考一下

簡(jiǎn)介

說(shuō)明

本文用示例介紹Java的ArrayList排序的方法。

List排序方法

主要有三種方法(按推薦度排序):

  • JDK8的stream
  • Comparator#compare()
  • Comparable#compareTo()

法1:JDK8的stream

見(jiàn):一文詳解Java中Stream流的使用

法2:Comparator#compare()

需求:用戶有成績(jī)和年齡。按成績(jī)排序,若成績(jī)相同,則按年齡排序。

package org.example.a;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
 
 
class User{
 
    private int score;
 
    private int age;
 
    public User(int score, int age){
        super();
        this.score = score;
        this.age = age;
    }
 
    public int getScore() {
        return score;
    }
 
    public void setScore(int score) {
        this.score = score;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
}
 
 
public class Demo {
    public static void main(String[] args) {
        List<User> users = new ArrayList<User>();
        users.add(new User(95, 26));
        users.add(new User(84, 23));
        users.add(new User(96, 25));
        users.add(new User(95, 24));
        Collections.sort(users, new Comparator<User>() {
            @Override
            public int compare(User o1, User o2) {
                int i = o2.getScore() - o1.getScore();
                if(i == 0){
                    return o1.getAge() - o2.getAge();
                }
                return i;
            }
        });
        for(User user : users){
            System.out.println(user.getScore() + "," + user.getAge());
        }
    }
 
}

執(zhí)行結(jié)果

96,25
95,24
95,26
84,23

法3:Comparable#compareTo()

默認(rèn)按增序排序:

package org.example.a;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
public class Demo {
    public static void main(String[] args) {
        List<Integer> nums = new ArrayList<Integer>();
        nums.add(3);
        nums.add(5);
        nums.add(1);
        nums.add(0);
        System.out.println(nums);
        Collections.sort(nums);
        System.out.println(nums);
    }
 
}

執(zhí)行結(jié)果:

[3, 5, 1, 0]
[0, 1, 3, 5]

需求:用戶有成績(jī)和年齡。按成績(jī)降序排序,若成績(jī)相同,則按年齡正序排序。

package org.example.a;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
 
class User implements Comparable<User>{
 
    private int score;
 
    private int age;
 
    public User(int score, int age){
        super();
        this.score = score;
        this.age = age;
    }
 
    public int getScore() {
        return score;
    }
 
    public void setScore(int score) {
        this.score = score;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    @Override
    public int compareTo(User o) {
        int i = o.getScore() - this.getScore();
        if(i == 0){
            return this.getAge() - o.getAge();
        }
        return i;
    }
}
 
 
public class Demo {
    public static void main(String[] args) {
        List<User> users = new ArrayList<User>();
        users.add(new User(95, 26));
        users.add(new User(84, 23));
        users.add(new User(96, 25));
        users.add(new User(95, 24));
        Collections.sort(users);
        for(User user : users){
            System.out.println(user.getScore() + "," + user.getAge());
        }
    }
 
}

執(zhí)行結(jié)果

96,25
95,24
95,26
84,23

到此這篇關(guān)于Java實(shí)現(xiàn)ArrayList排序的方法詳解的文章就介紹到這了,更多相關(guān)Java ArrayList排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 透徹理解Java中Synchronized(對(duì)象鎖)和Static Synchronized(類(lèi)鎖)的區(qū)別

    透徹理解Java中Synchronized(對(duì)象鎖)和Static Synchronized(類(lèi)鎖)的區(qū)別

    這篇文章主要介紹了Java中Synchronized(對(duì)象鎖)和Static Synchronized(類(lèi)鎖)的區(qū)別,希望對(duì)大家有所幫助,一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • SpringBoot整合mybatis-plus實(shí)現(xiàn)分頁(yè)查詢功能

    SpringBoot整合mybatis-plus實(shí)現(xiàn)分頁(yè)查詢功能

    這篇文章主要介紹了SpringBoot整合mybatis-plus實(shí)現(xiàn)分頁(yè)查詢功能,pringBoot分頁(yè)查詢的兩種寫(xiě)法,一種是手動(dòng)實(shí)現(xiàn),另一種是使用框架實(shí)現(xiàn),現(xiàn)在我將具體的實(shí)現(xiàn)流程分享一下,需要的朋友可以參考下
    2023-11-11
  • Java特性之注解和異常?Throwable

    Java特性之注解和異常?Throwable

    這篇文章主要介紹了Java特性之注解和異常,注解是JDK1.5版本開(kāi)始引入的一個(gè)特性,Throwable是Java語(yǔ)言中所有錯(cuò)誤與異常的超類(lèi),文章圍繞主題展開(kāi)更多的相關(guān)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • springboot省去配置Tomcat的步驟問(wèn)題

    springboot省去配置Tomcat的步驟問(wèn)題

    這篇文章主要介紹了springboot省去配置Tomcat的步驟問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Mybatis-Plus的多數(shù)據(jù)源你了解嗎

    Mybatis-Plus的多數(shù)據(jù)源你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Mybatis-Plus的多數(shù)據(jù)源,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • 一文搞懂Java中的日期類(lèi)

    一文搞懂Java中的日期類(lèi)

    在程序的開(kāi)發(fā)中我們經(jīng)常會(huì)遇到日期類(lèi)型的操作,Java對(duì)日期類(lèi)型的操作提供了很好的支持。本文將通過(guò)示例來(lái)聊聊Java中日期類(lèi)的使用,需要的可以參考一下
    2022-09-09
  • java報(bào)錯(cuò)非法的前向引用問(wèn)題

    java報(bào)錯(cuò)非法的前向引用問(wèn)題

    這篇文章主要介紹了java報(bào)錯(cuò)非法的前向引用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java Mail與Apache Mail發(fā)送郵件示例

    Java Mail與Apache Mail發(fā)送郵件示例

    這篇文章主要介紹了Java Mail與Apache Mail發(fā)送郵件示例的相關(guān)資料,需要的朋友可以參考下
    2014-10-10
  • java利用phantomjs進(jìn)行截圖實(shí)例教程

    java利用phantomjs進(jìn)行截圖實(shí)例教程

    PlantomJs是一個(gè)基于javascript的webkit內(nèi)核無(wú)頭瀏覽器 也就是沒(méi)有顯示界面的瀏覽器,你可以在基于 webkit 瀏覽器做的事情,它都能做到。下面這篇文章主要給大家介紹了關(guān)于java利用phantomjs進(jìn)行截圖的相關(guān)資料,需要的朋友可以參考下
    2018-10-10
  • Java設(shè)計(jì)模式之責(zé)任鏈模式詳解

    Java設(shè)計(jì)模式之責(zé)任鏈模式詳解

    客戶端發(fā)出一個(gè)請(qǐng)求,鏈上的對(duì)象都有機(jī)會(huì)來(lái)處理這一請(qǐng)求,而客戶端不需要知道誰(shuí)是具體的處理對(duì)象。這樣就實(shí)現(xiàn)了請(qǐng)求者和接受者之間的解耦,并且在客戶端可以實(shí)現(xiàn)動(dòng)態(tài)的組合職責(zé)鏈。使編程更有靈活性
    2022-07-07

最新評(píng)論