书上看到这样一句话“由于每个值分别包装在ArrayList中,ArrayList<Integer> 的效率远远低于int[]”
想问一下,单纯从Integer[] 和int[]的角度出发,如何判断其效率呢?
或者有人能给我一个分析问题的思路吗?涉及到哪方面的知识来分析这个问题呢?
我查看了源代码,类Integer对象的值是保存在value中。
创建/读取一个非基本类型对象数列 和 一个基本类型对象数列, 这个时间差别具体在哪里体现呢?我怎么计算呢?
谢谢了!
书上看到这样一句话“由于每个值分别包装在ArrayList中,ArrayList<Integer> 的效率远远低于int[]”
想问一下,单纯从Integer[] 和int[]的角度出发,如何判断其效率呢?
或者有人能给我一个分析问题的思路吗?涉及到哪方面的知识来分析这个问题呢?
我查看了源代码,类Integer对象的值是保存在value中。
创建/读取一个非基本类型对象数列 和 一个基本类型对象数列, 这个时间差别具体在哪里体现呢?我怎么计算呢?
谢谢了!
12 回答5.7k 阅读
2 回答3.2k 阅读✓ 已解决
3 回答6.9k 阅读✓ 已解决
3 回答3k 阅读✓ 已解决
5 回答4.5k 阅读
4 回答2.2k 阅读
3 回答4.2k 阅读
首先需要知道的一点,数组在java中也是对象。
数组对象的结构引用R大的一张ppt图
int[]
在数组结构中直接存储在array data中,也就是相邻的4字节数字,每次访问直接读取数字即可Integer[]
在array data中存储的是Integer
对象实例,具体结构参见我的另一个回答。每次访问时先找到Integer
实例,再去取里面的值。Integer
取值更繁琐,CPU执行的指令自然也就更多,需要的时钟周期也更多。