Java中的數(shù)組或列表。哪個(gè)更快?
我建議您使用探查器來測(cè)試哪個(gè)更快。
我個(gè)人認(rèn)為您應(yīng)該使用列表。
我在大型代碼庫(kù)上工作,以前的一組開發(fā)人員到處使用數(shù)組。它使代碼非常不靈活。將其大塊更改為“列表”后,我們注意到速度沒有差異。
我寫了一個(gè)基準(zhǔn)測(cè)試來比較ArrayLists和Arrays。在我的老式筆記本電腦上,遍歷5000個(gè)元素的數(shù)組列表的時(shí)間為1000次,比同等的數(shù)組代碼慢大約10毫秒。
所以,如果你在做什么,但迭代的列表,你做了很多,那么也許它的價(jià)值的最優(yōu)化。否則,我會(huì)使用列表中,因?yàn)樗鼤?huì)更容易,當(dāng)你這樣做需要優(yōu)化的代碼。
我確實(shí)注意到使用for String s: stringsList它比使用老式的for循環(huán)訪問列表要慢50%。走吧,這是我計(jì)時(shí)的兩個(gè)功能。數(shù)組和列表中填充了5000個(gè)隨機(jī)(不同)字符串。
private static void readArray(String[] strings) { long totalchars = 0; for (int j = 0; j < IteraTIONS; j++) {totalchars = 0;for (int i = 0; i < strings.length; i++) { totalchars += strings[i].length();} }}private static void readArrayList(List<String> stringsList) { long totalchars = 0; for (int j = 0; j < IteraTIONS; j++) {totalchars = 0;for (int i = 0; i < stringsList.size(); i++) { totalchars += stringsList.get(i).length();} }}解決方法
我必須在內(nèi)存中保留數(shù)千個(gè)字符串才能以Java順序訪問。我應(yīng)該將它們存儲(chǔ)在數(shù)組中還是應(yīng)該使用某種List?
由于數(shù)組將所有數(shù)據(jù)保存在連續(xù)的內(nèi)存塊中(與列表不同),使用數(shù)組存儲(chǔ)數(shù)千個(gè)字符串會(huì)不會(huì)引起問題?
相關(guān)文章:
1. javascript - 能否讓vue-cli的express修改express重啟服務(wù)2. java - 注解上的屬性可以傳遞嗎?3. 解決Android webview設(shè)置cookie和cookie丟失的問題4. android - 分享到微信,如何快速轉(zhuǎn)換成字節(jié)數(shù)組5. javascript - vue2.0中,$refs對(duì)象為什么用駝峰的方式獲取不到屬性?6. python bottle跑起來以后,定時(shí)執(zhí)行的任務(wù)為什么每次都重復(fù)(多)執(zhí)行一次?7. node.js - npm install全局安裝出錯(cuò),請(qǐng)問如何解決?謝謝!8. node.js - mac安裝mongodb第一次啟動(dòng)失敗9. javascript - nodejs使用mongoose連接數(shù)據(jù)庫(kù),使用post提交表單在后臺(tái),后臺(tái)處理后調(diào)用res.redirect()跳轉(zhuǎn)界面無效?10. node.js - npm一直提示proxy有問題
