一、集合排序概述
成都創(chuàng)新互聯(lián)專注于定遠(yuǎn)企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城網(wǎng)站制作。定遠(yuǎn)網(wǎng)站建設(shè)公司,為定遠(yuǎn)等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
1、主要內(nèi)容
回顧:
//數(shù)組的排序 int[] arr= {2,3,4,5,2,1}; Arrays.sort(arr);
2、集合排序方法
二、對(duì)基本數(shù)據(jù)類型和字符串類型進(jìn)行排序
1、對(duì)基本數(shù)據(jù)類型排序
List中只能存放對(duì)象,要想存放基本數(shù)據(jù)類型的話,泛型中只能寫其對(duì)應(yīng)的包裝類。
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class IntSort { public static void main(String[] args) { //對(duì)存儲(chǔ)在List中的整形數(shù)據(jù)進(jìn)行排序 List<Integer> list = new ArrayList<Integer>(); list.add(5); list.add(9); list.add(3); list.add(1); System.out.println("排序前:"); for (int n: list) { System.out.print(n + " "); } System.out.println(); //對(duì)List中的數(shù)據(jù)進(jìn)行排序 Collections.sort(list); System.out.println("排序后:"); for (int n: list) { System.out.print(n + " "); } } }
2、對(duì)字符串排序
集合中字符串的排序后其實(shí)是按字符順序,ASCII值順序進(jìn)行排序的
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class StringSort { public static void main(String[] args) { //對(duì)存放在List中的字符串進(jìn)行排序。 List<String> list = new ArrayList<String>(); list.add("orange"); list.add("blue"); list.add("yellow"); list.add("gray"); System.out.println("排序前: "); for (String str: list) { System.out.print(str + " "); } System.out.println(); //對(duì)List中的數(shù)據(jù)進(jìn)行排序 Collections.sort(list); System.out.println("排序后: "); for (String str: list) { System.out.print(str + " "); } //排序后其實(shí)是按字母順序 } }
三、Comparator接口
1、問(wèn)題場(chǎng)景:
自定義的類如何排序?
2、解決方法:
使用Comparable或Comparator接口
3、Comparator接口介紹
4、對(duì)寵物貓進(jìn)行排序
對(duì)自定義的類按照一定的規(guī)則進(jìn)行排序:
(1)對(duì)寵物貓按名字進(jìn)行排序
String類型具有compareTo()方法
例:
int n = name1.conpareTo(name2);
如果name1<name2時(shí),那么n是負(fù)整數(shù),相等則為0,否則為正整數(shù)。
name1與name2位置調(diào)換下,則會(huì)實(shí)現(xiàn)倒序的排序。
import java.util.Comparator; //按名字進(jìn)行升序排序的比較器 public class NameComparator implements Comparator<Cat> { @Override public int compare(Cat o1, Cat o2) { //按名字升序排序 String name1 = o1.getName(); String name2 = o2.getName(); int n = name1.compareTo(name2); return n; } }
語(yǔ)法格式:
Collections.sort(catList, new NameComparator());
(2)對(duì)寵物貓按年齡降序排序
import java.util.Comparator; //按年齡進(jìn)行降序排序的比較器 public class AgeComparator implements Comparator<Cat> { @Override public int compare(Cat o1, Cat o2) { int age1 = o1.getMonth(); int age2 = o2.getMonth(); return age2 - age1; } }
語(yǔ)法格式:
Collections.sort(catList, new AgeComparator());
四、Comparable接口
1、Comparable概述
2、對(duì)商品價(jià)格進(jìn)行降序排序案例
(1)操作步驟
(2)代碼實(shí)現(xiàn)
①商品類的定義
public class Goods implements Comparable<Goods> { //實(shí)現(xiàn)Comparable接口,利用泛型限定比較的類型 private String id; //商品編號(hào) private String name; //商品名稱 private double price; //商品價(jià)格 //構(gòu)造方法 public Goods() { } public Goods(String id, String name, double price) { this.setId(id); this.setName(name); this.setPrice(price); } //getter和setter方法 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 double getPrice() { return price; } public void setPrice(double price) { this.price = price; } @Override public String toString() { return "商品編號(hào):" + id + ",商品名稱:" + name + ",商品價(jià)格:" + price; } @Override public int compareTo(Goods o) { //重寫compareTo方法。 //取出商品價(jià)格 double price1 = this.getPrice(); double price2 = o.getPrice(); int n = new Double(price2 - price1).intValue(); //double類型的差值轉(zhuǎn)為int return n; }
②排序步驟
Collections.sort(goodsList);
五、集合排序總結(jié)
Comparator和Comparable接口的區(qū)別
1、Comparator:
①位于java.util包
②在要比較的類的外部實(shí)現(xiàn)該接口
③調(diào)用sort方法時(shí),要指定Comparator的實(shí)現(xiàn)類
使用順序:
2、Comparable
①位于java.lang包
②在要比較的類上實(shí)現(xiàn)該接口
③調(diào)用sort方法時(shí),只需指定集合名即可
使用順序:
定義要比較的類,并實(shí)現(xiàn)comparable接口
測(cè)試
以上所述是小編給大家介紹的Java集合排序詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!
新聞名稱:Java常用工具類—集合排序
路徑分享:http://m.rwnh.cn/article24/pdidce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、虛擬主機(jī)、微信小程序、網(wǎng)頁(yè)設(shè)計(jì)公司、ChatGPT、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)