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. 小白學(xué)python的問題 關(guān)于%d和%s的區(qū)別2. javascript - 使用vue做個(gè)抽獎(jiǎng)問題3. javascript - 請(qǐng)教移動(dòng)端從詳情頁(yè)返回到列表頁(yè)原來位置的問題?4. javascript - vuex中子組件無法調(diào)用公共狀態(tài)5. javascript - webpack 打包 reactjs項(xiàng)目 css 分離6. javascript - (_a = [""], _a.raw = [""],....); js一個(gè)小括號(hào)的是什么意思?7. javascript - 關(guān)于微信掃一掃的技術(shù)問題8. javascript - js正則替換日期格式問題9. javascript - 關(guān)于js高級(jí)程序中的問題10. javascript - ES5的閉包用ES6怎么實(shí)現(xiàn)
