【发布时间】:2015-07-09 19:31:13
【问题描述】:
Java 不允许我们直接创建原语的ArrayList。但是我们可以创建一个原始包装类的ArrayList。
但是当访问原始值时,编译器会自动进行包装和展开。这不是开销吗?我的问题是这对性能有何影响?
在这种情况下,int[] 的性能不会比 ArrayList<Integer> 更好吗?
有没有人测量过 int[] 与 ArrayList<Inetger> 对于 Java5.0(首次引入时)和更高版本的 Java 的性能。如果您可以分享测试结果,这对遇到此问题的每个人都会有帮助。
【问题讨论】:
-
数组和
List有不同的用法,在它们之间进行选择时通常不会降速。同样重要的是要知道每个ArrayList的下面都是一个数组。 -
原始数组更快(没有双倍的)但
List(以及一般的任何集合)对对象更方便。所以选择是你的,但无论你做什么都不要使用旧数组作为公共接口。 -
@Obicere 是真的。我试图理解,如果我们为了一点灵活性而牺牲性能。这特定于我们必须在 int[] 和 ArrayList
之间做出选择时
标签: java collections performance-testing primitive autoboxing