书上看到这样一句话“由于每个值分别包装在ArrayList中,ArrayList<Integer> 的效率远远低于int[]”
想问一下,单纯从Integer[] 和int[]的角度出发,如何判断其效率呢?
或者有人能给我一个分析问题的思路吗?涉及到哪方面的知识来分析这个问题呢?
我查看了源代码,类Integer对象的值是保存在value中。
创建/读取一个非基本类型对象数列 和 一个基本类型对象数列, 这个时间差别具体在哪里体现呢?我怎么计算呢?
谢谢了!
书上看到这样一句话“由于每个值分别包装在ArrayList中,ArrayList<Integer> 的效率远远低于int[]”
想问一下,单纯从Integer[] 和int[]的角度出发,如何判断其效率呢?
或者有人能给我一个分析问题的思路吗?涉及到哪方面的知识来分析这个问题呢?
我查看了源代码,类Integer对象的值是保存在value中。
创建/读取一个非基本类型对象数列 和 一个基本类型对象数列, 这个时间差别具体在哪里体现呢?我怎么计算呢?
谢谢了!
8 回答6.5k 阅读
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
4 回答604 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
2 回答2k 阅读
1 回答942 阅读✓ 已解决
首先需要知道的一点,数组在java中也是对象。
数组对象的结构引用R大的一张ppt图

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