第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

.toArray(new MyClass [0])或.toArray(new MyClass

.toArray(new MyClass [0])或.toArray(new MyClass

catspeake 2019-10-08 11:03:19
假設(shè)我有一個(gè)ArrayListArrayList<MyClass> myList;我想調(diào)用toArray,是否有使用性能的理由MyClass[] arr = myList.toArray(new MyClass[myList.size()]);過度MyClass[] arr = myList.toArray(new MyClass[0]);?我更喜歡第二種樣式,因?yàn)樗惶唛L,并且我假設(shè)編譯器將確保不會真正創(chuàng)建空數(shù)組,但是我一直在想那是否是真的。當(dāng)然,在99%的情況下,它不會以一種方式或其他方式產(chǎn)生任何差異,但是我想在我的普通代碼和優(yōu)化的內(nèi)部循環(huán)之間保持一致的樣式...
查看完整描述

3 回答

?
守候你守候我

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊

從Java 5中的ArrayList開始,如果數(shù)組具有正確的大?。ɑ蚋螅?,則將已填充該數(shù)組。所以


MyClass[] arr = myList.toArray(new MyClass[myList.size()]);

將創(chuàng)建一個(gè)數(shù)組對象,填充它并將其返回到“ arr”。另一方面


MyClass[] arr = myList.toArray(new MyClass[0]);

將創(chuàng)建兩個(gè)數(shù)組。第二個(gè)是長度為0的MyClass數(shù)組。因此,有一個(gè)對象創(chuàng)建對象,該對象將立即被丟棄。就源代碼而言,編譯器/ JIT無法優(yōu)化此代碼,因此無法創(chuàng)建它。此外,使用零長度對象會導(dǎo)致toArray()方法中的轉(zhuǎn)換。


請參見ArrayList.toArray()的來源:


public <T> T[] toArray(T[] a) {

    if (a.length < size)

        // Make a new array of a's runtime type, but my contents:

        return (T[]) Arrays.copyOf(elementData, size, a.getClass());

    System.arraycopy(elementData, 0, a, 0, size);

    if (a.length > size)

        a[size] = null;

    return a;

}

使用第一種方法,以便僅創(chuàng)建一個(gè)對象,并避免(隱式但仍然很昂貴)強(qiáng)制轉(zhuǎn)換。


查看完整回答
反對 回復(fù) 2019-10-08
?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

通過JetBrains Intellij Idea檢查:


有兩種樣式可以將集合轉(zhuǎn)換為數(shù)組:使用預(yù)大小數(shù)組(如c.toArray(new String [c.size()]))或使用空數(shù)組(如c.toArray(new String [ 0])。


在較早的Java版本中,建議使用預(yù)大小的數(shù)組,因?yàn)閯?chuàng)建適當(dāng)大小的數(shù)組所需的反射調(diào)用非常慢。但是,由于OpenJDK 6的更新較晚,因此此調(diào)用變得很有趣,與空大小版本相比,空數(shù)組版本的性能相同,有時(shí)甚至更好。同樣,傳遞預(yù)大小的數(shù)組對于并發(fā)或同步收集也是危險(xiǎn)的,因?yàn)樵趕ize和toArray 調(diào)用之間可能會發(fā)生數(shù)據(jù)爭用 ,如果在操作期間同時(shí)縮小了集合,則在數(shù)組末尾可能會導(dǎo)致額外的null。


此檢查允許遵循統(tǒng)一的樣式:使用空數(shù)組(在現(xiàn)代Java中建議使用)或使用預(yù)定大小的數(shù)組(在較早的Java版本或基于非HotSpot的JVM中可能更快)。


查看完整回答
反對 回復(fù) 2019-10-08
  • 3 回答
  • 0 關(guān)注
  • 1005 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號