[英]Iterate over a list of autobox type in Java
如果我填充這樣的列表
List<Integer> l = new ArrayList<>();
for(int i = 0; i < 1000000; ++i) {
l.add(i);
}
迭代此列表的最佳方法是什么(就代碼清潔度和效率而言):
使用 autobox 類型
for(Integer i : l) {
// do stuff...
}
或原始類型
for(int i : l) {
// do stuff...
}
實際上,第一個循環 - for(Integer i: l)
- 沒有自動裝箱,因為l
是List<Integer>
。 當您將元素添加到該List
時,會發生自動裝箱。
另一方面,第二個循環 - for(int i: l)
- 將Integer
元素自動拆箱到int
s。
至於哪個更好,這取決於你要對這些元素做什么。
例如,如果您要將它們添加到另一個List
(或檢查它們是否是某些Map
的鍵),則無需將它們拆箱,因此您可以使用第一個循環。
另一方面,如果您要對它們進行數字運算(例如計算它們的總和),則無論如何您都必須將它們拆箱,因此您最好在第二個循環中使用 go。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.