如果我填写这样的列表
List<Integer> l = new ArrayList<>();
for(int i = 0; i < 1000000; ++i) {
l.add(i);
}
迭代这个列表的最佳方法是什么(就代码的清洁度和效率而言):
自动箱类型
for(Integer i : l) {
// do stuff...
}
或者使用基元类型
for(int i : l) {
// do stuff...
}
2条答案
按热度按时间rqmkfv5c1#
我尝试了两个选项来计算列表的总和,结果就是这个
e4eetjau2#
实际上,第一个循环-
for(Integer i : l)
-没有自动装箱,因为l
是一个List<Integer>
. 当您向其中添加元素时,将发生自动装箱List
.另一方面,第二个循环-
for(int i : l)
-已自动拆封Integer
元素到int
s。至于哪一个更好,这取决于你将如何处理这些元素。
例如,如果要将它们添加到另一个
List
(或检查它们是否是某些Map
),不需要拆开它们,因此可以使用第一个循环。另一方面,如果要对它们进行数值运算(例如计算它们的和),那么无论如何都必须取消它们的装箱,因此最好使用第二个循环。