怎么在Java中對List進行初始化

怎么在Java中對List進行初始化?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴展宣傳的重要窗口,一個合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,創(chuàng)新互聯(lián)公司面向各種領(lǐng)域:集裝箱成都網(wǎng)站設(shè)計、成都全網(wǎng)營銷解決方案、網(wǎng)站設(shè)計等建站排名服務(wù)。


List是java重要的數(shù)據(jù)結(jié)構(gòu)之一,我們經(jīng)常接觸到的有ArrayList、Vector和LinkedList三種,他們都繼承來自java.util.Collection接口,類圖如下

怎么在Java中對List進行初始化

1.構(gòu)造 List 后使用 List.add 初始化

怎么在Java中對List進行初始化

這是最常規(guī)的做法,用起來不太方便。

2.使用 {{}} 雙括號語法

怎么在Java中對List進行初始化

這種方式相對方便了一些。

外層的{}定義了一個 LinkedList 的匿名內(nèi)部類。內(nèi)層的{}的定義了一個實例初始化代碼塊。 這個代碼塊在初始化內(nèi)部類時執(zhí)行。所以這里相當于定義了一個匿名內(nèi)部類,并使用add添加元素來初始化。

這種方式有幾個缺點:

使用匿名內(nèi)部類,會有效率上的損失。當然在大多數(shù)情況下,這點效率都是可接受的。

靜態(tài)內(nèi)部類持有所在外部類的引用。如果需要將 List 返回給到其他地方使用,可能造成內(nèi)存泄漏。

3.使用 Arrays.asList

怎么在Java中對List進行初始化

這種方式使用了 java.util.Arrays 的靜態(tài)方法。寫法上比之前的兩種都更簡潔,也沒有構(gòu)造匿名內(nèi)部類的效率問題。

但也有幾點需要注意:

Arrays.asList 返回的是 Arrays 的靜態(tài)內(nèi)部類(靜態(tài)內(nèi)部類不持有所在外部類的引用)。

這個內(nèi)部類繼承自 AbstractList,實現(xiàn)了 RandomAccess,內(nèi)部使用了一個數(shù)組來存儲元素。但是不支持增刪元素。這點需要注意。如果只是使用 Arrays.asList 來初始化常量,那么這點就不算什么問題了。

Arrays.asList 的參數(shù)如果是基本類型的數(shù)組時,需要留意返回值可能和你預(yù)期的不同。

怎么在Java中對List進行初始化

這里Arrays.asList(intArray)的返回值是List<int[]>而不是List<Integer>。這一點也算不上問題,只是使用時需要留意。如果能在 Java 中做到盡量使用 List 和 Integer,盡量避免使用 int 等基本類型和[]這種較為底層的數(shù)據(jù)結(jié)構(gòu)即可避免。

雖然本文是在講初始化List,但這里的{{}}雙括號語法同樣可用于初始化Map等其他眾多類型。相對而言,Arrays.asList就只能用于初始化List類型了。

4. 使用 Stream (JDK8)

怎么在Java中對List進行初始化

使用了 JDK8 的 Stream 來初始化。 單純初始化 List,使用 Stream 有點大材小用了。

5. 使用 Lists (JDK9)

怎么在Java中對List進行初始化

關(guān)于怎么在Java中對List進行初始化問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

文章題目:怎么在Java中對List進行初始化
網(wǎng)站網(wǎng)址:http://bm7419.com/article32/psdhpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站排名、網(wǎng)站內(nèi)鏈、ChatGPT、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站