ArrayList<Integer> 和int[] 的效率比较?

书上看到这样一句话“由于每个值分别包装在ArrayList中,ArrayList<Integer> 的效率远远低于int[]”

想问一下,单纯从Integer[] 和int[]的角度出发,如何判断其效率呢?

或者有人能给我一个分析问题的思路吗?涉及到哪方面的知识来分析这个问题呢?

我查看了源代码,类Integer对象的值是保存在value中。
创建/读取一个非基本类型对象数列 和 一个基本类型对象数列, 这个时间差别具体在哪里体现呢?我怎么计算呢?

谢谢了!

阅读 5.2k
1 个回答

首先需要知道的一点,数组在java中也是对象。

数组对象的结构引用R大的一张ppt图
图片描述

int[]在数组结构中直接存储在array data中,也就是相邻的4字节数字,每次访问直接读取数字即可
Integer[]在array data中存储的是Integer对象实例,具体结构参见我的另一个回答。每次访问时先找到Integer实例,再去取里面的值。
Integer取值更繁琐,CPU执行的指令自然也就更多,需要的时钟周期也更多。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏