java中ArrayList的兩種排序方法實(shí)例
前言
由于其功能性和靈活性,ArrayList是 Java 集合框架中使用最為普遍的集合類(lèi)之一。ArrayList 是一種 List 實(shí)現(xiàn),它的內(nèi)部用一個(gè)動(dòng)態(tài)數(shù)組來(lái)存儲(chǔ)元素,因此 ArrayList 能夠在添加和移除元素的時(shí)候進(jìn)行動(dòng)態(tài)的擴(kuò)展和縮減。你可能已經(jīng)使用過(guò) ArrayList,因此我將略過(guò)基礎(chǔ)部分。如果你對(duì) ArrayList 還不熟悉,你可以參考它的 API 文檔,可以很容易理解在 ArrayList 上執(zhí)行基本的操作。
1.ArrayList使用排序的初衷
我們知道ArrayList的好處是可以不用限定容器的大小,他會(huì)根據(jù)元素的增加自己擴(kuò)大。但是存儲(chǔ)進(jìn)去的數(shù)據(jù)類(lèi)型都會(huì)變成object,雖然每個(gè)元素有自己的index,但不像數(shù)組的下標(biāo)可以更加方便的操作。那我們平時(shí)學(xué)習(xí)的選擇排序啊快速排序啊都是對(duì)數(shù)組進(jìn)行操作。最開(kāi)始的笨辦法就是把list中的數(shù)據(jù)傳給數(shù)組排序好了再傳回來(lái)嘍。但是這樣效率真的下降的不是幾倍,是幾十倍啊真的不能這樣來(lái)。查了點(diǎn)資料和案例在這里總結(jié)一下。
2.對(duì)一個(gè)ArrayList中的數(shù)組進(jìn)行排序。
首先來(lái)看下Collection的幫助文檔:

在這里順便補(bǔ)充下ArrayList和Collection的關(guān)系:

具體的使用代碼如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class compre {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int n;
ArrayList al=new ArrayList();
System.out.println("請(qǐng)輸入需要的個(gè)數(shù)");
n=scan.nextInt();
System.out.println("請(qǐng)逐一輸入");
for(int i=0;i<n;i++) {
al.add(i,scan.nextInt());
}
System.out.println("你輸入的數(shù)字是:");
for(int i=0;i<al.size();i++) {
int temp=(int)al.get(i);
System.out.print(temp+" ");
}
Collections.sort(al);//針對(duì)一個(gè)ArrayList內(nèi)部的數(shù)據(jù)排序
System.out.println();
System.out.println("經(jīng)過(guò)排序后:");
for(int i=0;i<al.size();i++) {
int temp=(int)al.get(i);
System.out.print(temp+" ");
}
}
}
運(yùn)行結(jié)果:

3.多個(gè)ArrayList中的元素進(jìn)行排序
class SortByName implements Comparator {
public int compare(Object o1, Object o2) {
Student s1 = (Student) o1;
Student s2 = (Student) o2;
return s1.getName().compareTo(s2.getName());
}
}
class SortByAge implements Comparator {
public int compare(Object o1, Object o2) {
Student s1 = (Student) o1;
Student s2 = (Student) o2;
return s1.getAge().compareTo(s2.getAge());
// if (s1.getAge() > s2.getAge())
// return 1;
// return -1;
}
}
總結(jié)
到此這篇關(guān)于java中ArrayList兩種排序的文章就介紹到這了,更多相關(guān)java ArrayList排序方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot實(shí)現(xiàn)權(quán)限驗(yàn)證的示例步驟
權(quán)限驗(yàn)證是一種用于控制對(duì)系統(tǒng)資源和操作的訪問(wèn)的機(jī)制。它允許開(kāi)發(fā)人員定義誰(shuí)可以執(zhí)行特定操作或訪問(wèn)特定資源,并確保只有經(jīng)過(guò)授權(quán)的用戶(hù)才能執(zhí)行這些操作,這篇文章主要介紹了SpringBoot實(shí)現(xiàn)權(quán)限驗(yàn)證,需要的朋友可以參考下2023-08-08
AsyncHttpClient IOExceptionFilter異常過(guò)濾器
這篇文章主要為大家介紹了AsyncHttpClient IOExceptionFilter異常過(guò)濾器代碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Spring?Security自定義認(rèn)證邏輯實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于Spring?Security自定義認(rèn)證邏輯的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
關(guān)于Java Spring三級(jí)緩存和循環(huán)依賴(lài)的深入理解
對(duì)于循環(huán)依賴(lài),我相信讀者無(wú)論只是聽(tīng)過(guò)也好,還是有過(guò)了解也好,至少都有所接觸。但是我發(fā)現(xiàn)目前許多博客對(duì)于循環(huán)依賴(lài)的講解并不清楚,都提到了Spring的循環(huán)依賴(lài)解決方案是三級(jí)緩存,但是三級(jí)緩存每一級(jí)的作用是什么,很多博客都沒(méi)有提到,本篇文章帶你深入了解2021-09-09
Java實(shí)現(xiàn)壓縮 PDF文件大小的示例代碼
在日常工作中,我們經(jīng)常會(huì)遇到 PDF 文件體積過(guò)大的問(wèn)題,本文將為你揭示如何利用 Spire.PDF for Java 輕松實(shí)現(xiàn) PDF 文件大小的優(yōu)化與壓縮,感興趣的可以了解下2025-09-09
Java線程的調(diào)度與優(yōu)先級(jí)詳解
這篇文章主要為大家詳細(xì)介紹了Java線程的調(diào)度與優(yōu)先級(jí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03

