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

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

使用參數(shù)構(gòu)建多個(gè)對(duì)象并將它們傳遞到更多對(duì)象以添加到列表中的最有效方法

使用參數(shù)構(gòu)建多個(gè)對(duì)象并將它們傳遞到更多對(duì)象以添加到列表中的最有效方法

慕標(biāo)5832272 2023-11-01 21:01:44
我構(gòu)建了一個(gè)非常慢的對(duì)象列表,我需要提高構(gòu)建列表的速度。添加到列表中的對(duì)象本身具有多個(gè)子對(duì)象,通常為 3 個(gè)對(duì)象,根據(jù)剩余要添加的數(shù)據(jù)量更改為 2 或 1。我打算構(gòu)建一個(gè)子對(duì)象數(shù)據(jù) bean,因?yàn)閭鬟f的參數(shù)大部分相同,只有子對(duì)象發(fā)生變化。我相信有一種比我列出清單的方式更有效的方法。這是我現(xiàn)在的代碼:List<MainObject> list = new ArrayList();List<Data> dataList = getDataList();MainObject mainObject;int limit = 100;for(int i = 0; i < limit; i += 3) {                if(i == limit - 1) {                    list.add(mainObject = new MainObject(new SubObject(dataList.get(i), this, bBool, tabs)));                   }else if(i == limit - 2) {                    list.add(mainObject = new MainObject(new SubObject(dataList.get(i), this, bBool, tabs),                             new SubObject(dataList.get(i +1), this, bBool, tabs)));                }else {                                        list.add(mainObject = new MainObject(new SubObject(dataList.get(i), this, bBool, tabs),                             new SubObject(dataList.get(i +1), this, bBool, tabs),                             new SubObject(dataList.get(i +2), this, bBool, tabs)));                }}return list;參數(shù)“this、bBool、tabs”都是類變量并且始終相同。我確實(shí)知道最后一個(gè) else 條件在大多數(shù)情況下都會(huì)運(yùn)行,因此這可能應(yīng)該是 if 語(yǔ)句中的第一個(gè)條件,但我寧愿找到一種更好的方法來(lái)一起構(gòu)建列表。
查看完整描述

3 回答

?
德瑪西亞99

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

  1. 檢查 getDataList() 返回的列表類型;對(duì)于您的用例來(lái)說,它必須是 ArrayList - 如果它是 Linkedlist,則獲取索引調(diào)用會(huì)很繁重且耗時(shí)

  2. 將 limit-1 和 limit-2 情況移出 for 循環(huán)并退出循環(huán) limit-2 本身。


查看完整回答
反對(duì) 回復(fù) 2023-11-01
?
哆啦的時(shí)光機(jī)

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

  1. 您不需要將新的 MainObject 分配給變量

  2. 將 MainObjects 列表更改為 LinkedList。添加操作對(duì)于 LinkedList 來(lái)說更有效,因?yàn)?ArrayList 必須在數(shù)組滿時(shí)重建數(shù)組 - 它非常耗時(shí)(或者只是創(chuàng)建具有限制大小的 ArrayList:new ArrayList<>(limit);)

  3. getDataList() 方法應(yīng)返回 LinkedList


查看完整回答
反對(duì) 回復(fù) 2023-11-01
?
慕尼黑8549860

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

對(duì)于您的limit = 100,顯示的代碼中沒有任何內(nèi)容可能會(huì)很慢。您當(dāng)然可以進(jìn)行一些低級(jí)優(yōu)化,如 Srini 提出的(“將 limit-1 和 limit-2 情況移到外部”),但罪魁禍?zhǔn)自谄渌胤剑阂丛跇?gòu)造函數(shù)中,要么在dataList::get.

作為一個(gè)快速技巧,請(qǐng)dataList = new ArrayList<>(dataList)在循環(huán)之前嘗試。


查看完整回答
反對(duì) 回復(fù) 2023-11-01
  • 3 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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