在java中迭代autobox类型的列表

4ngedf3f  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(554)

如果我填写这样的列表

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...
        }
rqmkfv5c

rqmkfv5c1#

我尝试了两个选项来计算列表的总和,结果就是这个

e4eetjau

e4eetjau2#

实际上,第一个循环- for(Integer i : l) -没有自动装箱,因为 l 是一个 List<Integer> . 当您向其中添加元素时,将发生自动装箱 List .
另一方面,第二个循环- for(int i : l) -已自动拆封 Integer 元素到 int s。
至于哪一个更好,这取决于你将如何处理这些元素。
例如,如果要将它们添加到另一个 List (或检查它们是否是某些 Map ),不需要拆开它们,因此可以使用第一个循环。
另一方面,如果要对它们进行数值运算(例如计算它们的和),那么无论如何都必须取消它们的装箱,因此最好使用第二个循环。

相关问题