大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java技術(shù)編程分享,arrays的用法

Java技術(shù)編程分享,arrays的用法

更新時間:2020-06-02 16:32:51 來源:動力節(jié)點 瀏覽2243次

Arrays

位于java.util包內(nèi)的Arrays類是Java提供的一個操作數(shù)組的工具類,其內(nèi)部定義了一些常見的用于操作數(shù)組的靜態(tài)方法,下面就按照以下幾個常用類型,梳理一下。

數(shù)組轉(zhuǎn)List

排序

查找

元素填充

Arrays數(shù)組操作集

數(shù)組轉(zhuǎn)List---asList

Java技術(shù)編程分享,arrays的用法

這個被“普遍”稱為數(shù)組轉(zhuǎn)List的方法,可能是Arrays內(nèi)大家使用頻率最高的一個靜態(tài)方法了。使用起來也很簡單,下面就很容易的實現(xiàn)了將數(shù)組轉(zhuǎn)為List。

Java技術(shù)編程分享,arrays的用法

當然還有另一種使用方法:

Java技術(shù)編程分享,arrays的用法

其實,個人感覺“數(shù)組轉(zhuǎn)List”這種說法是沒有意義的;我們都知道在List是一個接口,而真正實現(xiàn)了這個接口的類只有ArrayList,LinkedList,Vector。其中ArrayList和Vector內(nèi)部都是使用“動態(tài)數(shù)組”實現(xiàn),LinkedList采用鏈表結(jié)構(gòu)實現(xiàn)。數(shù)據(jù)的物理結(jié)構(gòu)只用順序存儲接口和鏈式存儲結(jié)構(gòu),List也不出其右。因此說這個方法實現(xiàn)了數(shù)組拷貝更確切一點。

下面,根據(jù)他的具體實現(xiàn),我們更能體會到拷貝的意義。

Java技術(shù)編程分享,arrays的用法

這里需要注意的是,asList內(nèi)部的ArrayList并不是我們常用的那個ArrayList,而是在Arrays類內(nèi)部的一個私有靜態(tài)類。從代碼可以看出,這個內(nèi)部的ArrayList,和常規(guī)的ArrayList相比,并沒有實現(xiàn)List接口,而是直接繼承了AbstractList。

以下所說的ArrayList統(tǒng)一指此處的靜態(tài)類

asList的實現(xiàn)很簡單,返回了一個ArrayList的實例,參數(shù)為所要拷貝的數(shù)組名。

可以看到asList()是接受一個泛型的變長參數(shù)的,而基本數(shù)據(jù)類型是無法被泛型化的。而對于泛型而言,基本數(shù)據(jù)類型,實際上會被人為是一個[x的類型。[表示這是一個數(shù)組,x為當前數(shù)組的類型。

因此,這個方法不能直接“轉(zhuǎn)換”基礎(chǔ)數(shù)據(jù)類型的數(shù)組。

Java技術(shù)編程分享,arrays的用法

可以看到,正常情況下,ArrayList的構(gòu)造函數(shù)完成的工作就是一個賦值操作,把我們傳遞進來的數(shù)組賦給a,而a就是一個數(shù)組。說白了,這就是一個數(shù)組拷貝的過程。再看ArrayList內(nèi)部實現(xiàn),get,set都是根據(jù)數(shù)組下標實現(xiàn)簡單的數(shù)組賦值操作。這里省略了ArrayList內(nèi)部幾個方法,總之都是對數(shù)組的操作,有興趣的同學,可以自行查看源碼。注意,這個類內(nèi)部,并沒有add方法的具體實現(xiàn),也就是說AbstractList內(nèi)部的add方法并沒有被覆蓋

AbstractList#add

Java技術(shù)編程分享,arrays的用法

因此,通過asList返回的List,一定不能進行add操作,否則會拋出異常。

通過以上分析,我們可以得出以下結(jié)論:

asList不接受基本數(shù)據(jù)類型的數(shù)組名,作為參數(shù)直接傳遞。

asList通過backed(拷貝)的方式,返回的是一個固定長度的List,這點從方法注釋也可以看到

鑒于第二條,不能對這個返回的List執(zhí)行add方法,可以調(diào)用set方法。

同理不能調(diào)用remove方法,但可以調(diào)用get方法獲取元素。

這里關(guān)于第一個結(jié)論,還需要解釋一下,不接受基本數(shù)據(jù)類型的數(shù)組名作為參數(shù),但是以下實現(xiàn)是可以的。

Java技術(shù)編程分享,arrays的用法

好了,Arrays.asList的用法就說到這里了。既然都到這里了,順便多說一句,List轉(zhuǎn)數(shù)組的實現(xiàn),Collection接口定義了統(tǒng)一的方法toArray。對于不同的List實現(xiàn),統(tǒng)一調(diào)用即可。

Java技術(shù)編程分享,arrays的用法

排序

sort

sort()方法顧名思義,主要是實現(xiàn)數(shù)組的排序,默認按升序進行排列。

Arrays內(nèi)部關(guān)于sort的實現(xiàn),可以大體分為兩類,一類是基本數(shù)據(jù)類型的排序,一類是Object類型的排序。

基本數(shù)據(jù)類型的排序

Java技術(shù)編程分享,arrays的用法

sort靜態(tài)方法的實現(xiàn),按參數(shù)主要有兩種實現(xiàn)方法,一種是數(shù)組整體進行排序;一種是在數(shù)組內(nèi)指定一段起始位置進行排序,之后的對象數(shù)組排序也只是按指定起始位置排序,不再重復描述。其內(nèi)部具體實現(xiàn)是DualPivotQuicksort(雙軸快速排序)。

這里可以接收的參數(shù)類型除了int數(shù)組,還可以是long,short,char,byte,float,double類型數(shù)組。

Object類型數(shù)組排序

實現(xiàn)Comparable接口的對象數(shù)組排序

Java技術(shù)編程分享,arrays的用法

注意,使用這個方法時,提供的“數(shù)組中的對象”必須是實現(xiàn)了Comparable接口的,也就是說必須告知明確告知,對數(shù)組中的對象是按什么規(guī)則排序。

實現(xiàn)Comparator接口的排序

Java技術(shù)編程分享,arrays的用法

使用這個方法是泛型為T的數(shù)組,需要提供一個實現(xiàn)了Comparator接口的實例,同理也是必須明確告知排序規(guī)則,如果同時實現(xiàn)了Comparable接口和Comparator接口,Comparator接口的實現(xiàn)將覆蓋Comparable接口的排序規(guī)則。

對象數(shù)組排序內(nèi)部實現(xiàn)采用了LegacyMergeSort(歸并排序)和TimSort排序。

parallelSort

parallelSort是Java8新增的排序方式,和sort方法不同的是,他采用多線程并行的方式進行排序,當數(shù)據(jù)規(guī)模較大時和sort相比有明顯優(yōu)勢.

Java技術(shù)編程分享,arrays的用法

parallelSort使用方式及可接受參數(shù)類型和sort方法基礎(chǔ)數(shù)據(jù)類型時的參數(shù)完全一致。

查找

Arrays內(nèi)部的查找,主要是binarySearch(二分查找法)。可以說,關(guān)于查找到實現(xiàn)分類和排序完全一樣。首先從數(shù)據(jù)類型上也是分為基礎(chǔ)數(shù)據(jù)類型構(gòu)成的數(shù)組和對象數(shù)組。都支持按特定范圍進行排序;對于對象數(shù)組的排序,對象數(shù)組需要實現(xiàn)Comparable接口或者是提供Comparator接口的實例。

Java技術(shù)編程分享,arrays的用法

元素填充

Java技術(shù)編程分享,arrays的用法

fill()方法,使用很簡單,也很好理解,將數(shù)組用特定的元素val填滿即可,也可以是特定位置。

以上就是動力節(jié)點java培訓機構(gòu)的小編針對“Java技術(shù)編程分享,arrays的用法”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日本成片 | 中文字幕一区二区三区四区 | 九九热视| 亚洲成人伊人网 | 欧美亚洲国产一级毛片 | 久久国产一片免费观看 | 91最新视频在线观看 | 日韩经典中文字幕 | 日本xxx高清免费视频 | 99久久精品一区二区三区 | 日本高清视频www夜色资源 | 97精品久久久久中文字幕 | 欧美高清不卡 | 色婷婷色综合缴情在线 | 2046影院视频大全在线观看 | 四虎最新网站 | 精品国产第一国产综合精品gif | 天天艹夜夜 | 久草香蕉视频在线观看 | 日本不卡视频 | 亚洲精品视频在线观看视频 | 香香影院在线观看 | a级做人爱免费播放 | 国产原创精品 | 九九这里只有精品 | 天天操天天摸天天舔 | 亚洲精品一区国产二区 | 欧美 xx性 在线 | 中文在线观看视频 | 亚洲国产精品aa在线看 | 日韩性网 | 在线看国产精品 | 久久精品啪啪嗷嗷叫 | 在线看片a | 国产图片综合 | 国产福利视频一区 | 九九久久久 | 五月婷婷伊人网 | 日本免费一区二区三区在线看 | 国产一区在线观看免费 | 日本免费一区二区三区在线看 |