亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java中的arrays.sort()代碼詳解

2024-07-13 10:15:28
字體:
來源:轉載
供稿:網友

Arrays.sort(T[], Comparator < ? super T > c) 方法用于對象數組按用戶自定義規則排序.
官方Java文檔只是簡要描述此方法的作用,并未進行詳細的介紹,本文將深入解析此方法。

1. 簡單示例

sort方法的使用非常的簡單明了,下面的例子中,先定義一個比較Dog大小的Comparator,然后將其實例對象作為參數傳給sort方法,通過此示例,你應該能夠快速掌握Arrays.sort()的使用方法。

import java.util.Arrays;import java.util.Comparator;class Dog{	int size;	public Dog(int s){		size = s;	}}class DogSizeComparator implements Comparator<Dog>{	@Override 	  public int compare(Dog o1, Dog o2) {		return o1.size - o2.size;	}}public class ArraySort {	public static void main(String[] args) {		Dog d1 = new Dog(2);		Dog d2 = new Dog(1);		Dog d3 = new Dog(3);		Dog[] dogArray = {d1, d2, d3};		printDogs(dogArray);		Arrays.sort(dogArray, new DogSizeComparator());		printDogs(dogArray);	}	public static void printDogs(Dog[] dogs){		for (Dog d: dogs) 		      System.out.print(d.size + " " );		System.out.println();	}}

輸出為:

2 1 3 1 2 3 

2.使用策略模式

這是策略模式(Strategypattern)的一個完美又簡潔的示例,值得一提的是為什么這種場景下適合使用策略模式.

總體來說,策略模式允許在程序執行時選擇不同的算法.比如在排序時,傳入不同的比較器(Comparator),就采用不同的算法.

根據上面的例子,假設你想要根據Dog的重量來進行排序,可以像下面這樣,創建一個新的比較器來進行排序:

class Dog{	int size;	int weight;	public Dog(int s, int w){		size = s;		weight = w;	}}class DogSizeComparator implements Comparator<Dog>{	@Override 	  public int compare(Dog o1, Dog o2) {		return o1.size - o2.size;	}}class DogWeightComparator implements Comparator<Dog>{	@Override 	  public int compare(Dog o1, Dog o2) {		return o1.weight - o2.weight;	}}public class ArraySort {	public static void main(String[] args) {		Dog d1 = new Dog(2, 50);		Dog d2 = new Dog(1, 30);		Dog d3 = new Dog(3, 40);		Dog[] dogArray = {d1, d2, d3};		printDogs(dogArray);		Arrays.sort(dogArray, new DogSizeComparator());		printDogs(dogArray);		Arrays.sort(dogArray, new DogWeightComparator());		printDogs(dogArray);	}	public static void printDogs(Dog[] dogs){		for (Dog d: dogs) 		      System.out.print("size="+d.size + " weight=" + d.weight + " ");		System.out.println();	}}

執行結果:

size=2 weight=50 size=1 weight=30 size=3 weight=40 size=1 weight=30 size=2 weight=50 size=3 weight=40 size=1 weight=30 size=3 weight=40 size=2 weight=50 

Comparator是一個接口,所以sort方法中可以傳入任意實現了此接口的類的實例,這就是策略模式的主要思想.

3.為何使用”super”

如果使用“Comparator<T>c”那是很簡單易懂的,但是sort的第2個參數里面的<?superT>意味著比較器所接受的類型可以是T或者它的超類.為什么是超類呢?答案是:這允許使用同一個比較器對不同的子類對象進行比較.在下面的示例中很明顯地演示了這一點:

import java.util.Arrays;import java.util.Comparator;class Animal{	int size;}class Dog extends Animal{	public Dog(int s){		size = s;	}}class Cat extends Animal{	public Cat(int s){		size = s;	}}class AnimalSizeComparator implements Comparator<Animal>{	@Override 	  public int compare(Animal o1, Animal o2) {		return o1.size - o2.size;	}	//in this way, all sub classes of Animal can use this comparator.}public class ArraySort {	public static void main(String[] args) {		Dog d1 = new Dog(2);		Dog d2 = new Dog(1);		Dog d3 = new Dog(3);		Dog[] dogArray = {d1, d2, d3};		printDogs(dogArray);		Arrays.sort(dogArray, new AnimalSizeComparator());		printDogs(dogArray);		System.out.println();		//when you have an array of Cat, same Comparator can be used.  		Cat c1 = new Cat(2);		Cat c2 = new Cat(1);		Cat c3 = new Cat(3);		Cat[] catArray = {c1, c2, c3};		printDogs(catArray);		Arrays.sort(catArray, new AnimalSizeComparator());		printDogs(catArray);	}	public static void printDogs(Animal[] animals){		for (Animal a: animals) 		      System.out.print("size="+a.size + " ");		System.out.println();	}}

輸出結果:

size=2 size=1 size=3 size=1 size=2 size=3 size=2 size=1 size=3 size=1 size=2 size=3 

4. 小結

與Arrays.sort()相關的信息總結如下:

通用: super 類
策略設計模式(strategy pattern);
歸并排序(merge sort): 時間復雜度 n*log(n);
Java.util.Collections#sort(List < T > list, Comparator < ? super T > c)與Arrays.sort 使用類似的思想.

總結

以上就是本文關于Java中的Arrays.sort()代碼詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他Java相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人免费在线视频| 午夜精品三级视频福利| 国产精品亚洲视频在线观看| 亚洲国产精品人久久电影| 日韩久久免费电影| 欧美日韩高清区| 欧美中文在线字幕| 国产xxx69麻豆国语对白| 亚洲人成毛片在线播放| 欧美最猛性xxxxx(亚洲精品)| 91色在线视频| 精品高清一区二区三区| 欧美自拍大量在线观看| 国产精品一区二区3区| 亚洲国内精品在线| 欧美黄色片视频| 久久精品99久久久香蕉| 久久九九全国免费精品观看| 国产91在线播放| 亚洲天天在线日亚洲洲精| 亚洲国产第一页| 国产99久久久欧美黑人| 久久全球大尺度高清视频| 亚洲淫片在线视频| 日韩av在线一区二区| 国产精品99久久久久久www| 中文字幕日韩视频| 九色成人免费视频| 永久免费毛片在线播放不卡| 日韩a**站在线观看| 国产97在线播放| 日本精品一区二区三区在线播放视频| 日本午夜精品理论片a级appf发布| 国产精品欧美一区二区| 国产成人精品一区二区三区| 亚洲视频在线视频| 亚洲加勒比久久88色综合| 国产精品中文久久久久久久| 国产成人精品999| 日本国产高清不卡| 国产中文字幕91| 日韩天堂在线视频| 久久成人人人人精品欧| 中文字幕av一区二区| 国产精品久久77777| 在线观看成人黄色| 国产一区二中文字幕在线看| 亚洲视频日韩精品| 成人国产精品久久久| 日本一区二区不卡| 亚洲综合成人婷婷小说| 视频直播国产精品| 欧美国产日韩免费| 精品久久久久久中文字幕大豆网| 久久精品夜夜夜夜夜久久| 精品国产91久久久久久老师| 国产福利精品在线| 欧美性xxxxhd| 91在线视频免费| 亚洲欧美日韩天堂一区二区| 91视频国产高清| 国产日韩欧美91| 欧美激情性做爰免费视频| 97久久精品在线| 欧美美女18p| 国产精品草莓在线免费观看| 国产精品第8页| 这里只有精品视频在线| 亚洲无限乱码一二三四麻| 一本色道久久综合狠狠躁篇的优点| 狠狠久久五月精品中文字幕| 中文字幕国产亚洲2019| 日韩免费av片在线观看| 精品视频在线观看日韩| 国语自产精品视频在线看一大j8| 国产一区二区欧美日韩| 欧美日韩一区二区三区在线免费观看| 国产精品第一第二| 国产国产精品人在线视| 日韩精品在线观| 国产成人aa精品一区在线播放| 亚洲日本aⅴ片在线观看香蕉| 中文精品99久久国产香蕉| 日本aⅴ大伊香蕉精品视频| 国色天香2019中文字幕在线观看| 欧美日韩爱爱视频| 欧美日韩高清在线观看| 国产精品亚洲精品| 亚洲成人在线视频播放| 国产精品三级美女白浆呻吟| 都市激情亚洲色图| 国产一区二区免费| 欧美另类第一页| 国产69久久精品成人看| 在线观看精品国产视频| 亚洲国产欧美精品| 米奇精品一区二区三区在线观看| 久久久久成人精品| 欧美成人久久久| 欧美裸体xxxx极品少妇| 亚洲开心激情网| 26uuu亚洲国产精品| 欧美一区在线直播| 日韩视频在线免费观看| 久久久久久久影院| 亚洲欧美在线x视频| 国产精自产拍久久久久久| 一区二区三区www| 国产精品91久久| 日韩国产欧美区| 国产精品观看在线亚洲人成网| 91久久久久久久一区二区| 久久久免费高清电视剧观看| 国产美女久久精品香蕉69| 66m—66摸成人免费视频| 欧美国产日韩在线| 久久九九精品99国产精品| 性欧美亚洲xxxx乳在线观看| 国产精品免费电影| 日韩精品免费电影| 性欧美亚洲xxxx乳在线观看| 成人精品视频久久久久| 久久亚洲精品视频| 亚洲视频电影图片偷拍一区| 人人澡人人澡人人看欧美| 中文字幕在线视频日韩| 成人福利网站在线观看| 日韩一区二区久久久| 亚洲www在线| 26uuu另类亚洲欧美日本老年| 国模私拍一区二区三区| 亚洲欧美日韩国产中文专区| 国产精品美女免费看| 欧美日本高清一区| 91高清视频免费观看| 久久视频这里只有精品| 国产精品白嫩美女在线观看| 成人性教育视频在线观看| 中文字幕自拍vr一区二区三区| 91九色单男在线观看| 国模视频一区二区| 2018日韩中文字幕| 亚洲人成网站色ww在线| 一本色道久久综合狠狠躁篇怎么玩| 日韩精品免费电影| 日韩经典第一页| 国产成人精品电影久久久| 一区二区三欧美| 亚洲欧美综合精品久久成人| 亚洲最新在线视频| 97人人爽人人喊人人模波多| 日韩在线观看免费av| 欧美日韩国产综合视频在线观看中文| 中文字幕欧美视频在线| 国产精品美女免费看| 欧美日韩裸体免费视频| 日韩av在线直播| 久久国产精品久久久久久| 亚洲精品网站在线播放gif| 久久久黄色av| 日韩精品在线私人| 国产精品久久一区主播| 国产欧美一区二区三区在线看| 色噜噜亚洲精品中文字幕|