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

java對ArrayList中元素進(jìn)行排序的幾種方式總結(jié)

 更新時間:2024年08月19日 08:57:20   作者:Ez4Sterben  
在Java中,ArrayList類提供了多種排序方法,可以根據(jù)不同的需求選擇適合的排序方法,下面這篇文章主要給大家介紹了關(guān)于java對ArrayList中元素進(jìn)行排序的幾種方式,需要的朋友可以參考下

一、使用Collections工具類

1、對基本類型排序

通過Collections.sort()對基本類型排序默認(rèn)是以升序排序

// 1.Collections.sort()默認(rèn)按照升序排序
List<Integer> integerList = new ArrayList<>();
Collections.addAll(integerList,1,2,6,5,5,4,55,4,5,5,4,5,2,4,6,2,45);
Collections.sort(integerList);
System.out.println(integerList);

2、對字符串類型排序

對字符串類型排序默認(rèn)按照首字母a-z排序

// 2.對字符串類型排序
List<String> strings = new ArrayList<>();
Collections.addAll(strings,"d","gsf","trh","fsd","an");
Collections.sort(strings);
System.out.println(strings);

3、對對象排序

如何使用Collections對對象排序呢?

其實只需要讓我們的數(shù)據(jù)類型實現(xiàn)Comparable接口即可,下面定義一個實現(xiàn)Comparable接口的學(xué)生類,并且實現(xiàn)compareTo方法,讓學(xué)生類只比較年齡。

/**
 * 學(xué)生
 *
 * @author ez4sterben
 * @date 2023/07/18
 */
public class Student implements Comparable<Student> {

    private String id;
    private String name;
    private Integer age;
    private String sex;

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                '}';
    }

    public Student(Integer age) {
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public int compareTo(Student o) {
    	// 這種是升序
        return this.getAge() - o.getAge();
        // 這種是降序
        // return o.getAge() - this.getAge();
    }
}

排序方法和正常使用一樣,直接把整個list傳入即可

// 3.對對象排序
        List<Student> students = new ArrayList<>();
        Collections.addAll(students,
                new Student(18),
                new Student(26),
                new Student(20),
                new Student(16),
                new Student(12));
        System.out.println(students);
        Collections.sort(students);
        System.out.println(students);

二、使用stream流

// 2.lambda表達(dá)式
        Stream<Integer> sorted = integerList.stream().sorted();
        System.out.println(Arrays.toString(sorted.toArray()));

三、使用排序算法(以冒泡排序為例)

// 3.直接使用排序算法(以冒泡排序為例)
        for(int i = 0; i < integerList.size() - 1; i++){
            for(int j = 0; j < integerList.size() - i - 1; j++){
                if(integerList.get(j) > integerList.get(j + 1)){
                    Integer temp = integerList.get(j);
                    integerList.set(j, integerList.get(j + 1));
                    integerList.set(j + 1, temp);
                }
            }
        }
        System.out.println(integerList);

四、測試類整體代碼

import java.util.*;
import java.util.stream.Stream;

/**
 * 數(shù)組列表排序
 *
 * @author ez4sterben
 * @date 2023/07/19
 */
public class ArrayListSort {
    public static void main(String[] args) {
        List<Integer> integerList = new ArrayList<>();
        Collections.addAll(integerList,1,2,6,5,5,4,55,4,5,5,4,5,2,4,6,2,45);
        // 1.Collections.sort()默認(rèn)按照升序排序
        Collections.sort(integerList);
        System.out.println(integerList);
        // 2.對字符串類型排序
        List<String> strings = new ArrayList<>();
        Collections.addAll(strings,"d","gsf","trh","fsd","an");
        Collections.sort(strings);
        System.out.println(strings);
        // 3.對對象排序
        List<Student> students = new ArrayList<>();
        Collections.addAll(students,
                new Student(18),
                new Student(26),
                new Student(20),
                new Student(16),
                new Student(12));
        System.out.println(students);
        Collections.sort(students);
        System.out.println(students);

        // 2.lambda表達(dá)式
        Stream<Integer> sorted = integerList.stream().sorted();
        System.out.println(Arrays.toString(sorted.toArray()));

        // 3.直接使用排序算法(以冒泡排序為例)
        for(int i = 0; i < integerList.size() - 1; i++){
            for(int j = 0; j < integerList.size() - i - 1; j++){
                if(integerList.get(j) > integerList.get(j + 1)){
                    Integer temp = integerList.get(j);
                    integerList.set(j, integerList.get(j + 1));
                    integerList.set(j + 1, temp);
                }
            }
        }
        System.out.println(integerList);

    }
}

總結(jié) 

到此這篇關(guān)于java對ArrayList中元素進(jìn)行排序的幾種方式總結(jié)的文章就介紹到這了,更多相關(guān)java對ArrayList元素排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring boot工具類靜態(tài)屬性注入及多環(huán)境配置詳解

    Spring boot工具類靜態(tài)屬性注入及多環(huán)境配置詳解

    這篇文章主要為大家詳細(xì)介紹了Spring boot工具類靜態(tài)屬性注入,及多環(huán)境配置詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • AOP之事務(wù)管理<aop:advisor>的兩種配置方式

    AOP之事務(wù)管理<aop:advisor>的兩種配置方式

    這篇文章主要介紹了AOP之事務(wù)管理<aop:advisor>的兩種配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 舉例講解Java設(shè)計模式編程中模板方法模式的運(yùn)用實例

    舉例講解Java設(shè)計模式編程中模板方法模式的運(yùn)用實例

    這篇文章主要介紹了Java設(shè)計模式編程中模板方法模式的運(yùn)用實例,模板方法模式強(qiáng)調(diào)基于繼承的代碼復(fù)用,需要的朋友可以參考下
    2016-05-05
  • Java異常分類及統(tǒng)一處理詳解

    Java異常分類及統(tǒng)一處理詳解

    這篇文章主要為大家詳細(xì)介紹了Java異常分類及統(tǒng)一處理,SpringMVC處理異常支持ajax,web.xml配置異常,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Java實現(xiàn)的具有GUI的校園導(dǎo)航系統(tǒng)的完整代碼

    Java實現(xiàn)的具有GUI的校園導(dǎo)航系統(tǒng)的完整代碼

    這篇文章主要介紹了Java實現(xiàn)的具有GUI的校園導(dǎo)航系統(tǒng)的完整代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • SpringMVC接收復(fù)雜集合對象(參數(shù))代碼示例

    SpringMVC接收復(fù)雜集合對象(參數(shù))代碼示例

    這篇文章主要介紹了SpringMVC接收復(fù)雜集合對象(參數(shù))代碼示例,舉接收List<String>、List<User>、List<Map<String,Object>>、User[]、User(bean里面包含List)幾種較為復(fù)雜的集合參數(shù),具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • mybatis-plus分頁查詢?nèi)N方法小結(jié)

    mybatis-plus分頁查詢?nèi)N方法小結(jié)

    本文主要介紹了mybatis-plus分頁查詢?nèi)N方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Spring?Boot?整合?Fisco?Bcos的案例分析(區(qū)塊鏈)

    Spring?Boot?整合?Fisco?Bcos的案例分析(區(qū)塊鏈)

    本篇文章介紹的?Spring?Boot?整合?Fisco?Bcos的案例,是在阿里云服務(wù)器上部署驗證的。大家可根據(jù)自己的電腦環(huán)境,對比該案例進(jìn)行開發(fā)即可,具體案例代碼跟隨小編一起看看吧
    2022-01-01
  • Java中printStackTrace()用法示例

    Java中printStackTrace()用法示例

    這篇文章主要給大家介紹了關(guān)于Java中printStackTrace()用法的相關(guān)資料,printStackTrace()方法一般與拋出異常搭配使用,效果是打印出異常位置,需要的朋友可以參考下
    2024-05-05
  • Spring依賴注入(DI)兩種方式的示例詳解

    Spring依賴注入(DI)兩種方式的示例詳解

    這篇文章主要介紹了Spring依賴注入(DI)的兩種方式:setter注入和構(gòu)造器注入。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-06-06

最新評論