最小堆java实现arraylist vs array

最小堆java实现arraylist vs array,java,arrays,arraylist,heap,Java,Arrays,Arraylist,Heap,所以我正在为我目前正在学习的算法课程做一个项目。我在网上做一些研究,发现有些人在使用ArrayList,有些人在使用int-array[]。我的问题是,最小堆使用什么更好,为什么。该项目要求我从一个非常大的数字列表中保留列表中前10000个最大的数字,如果您在编译时知道数组大小的话。当然,性能差异可能可以忽略不计——但其思想是,ArrayList在内部实现为一个对象[]数组,因此您可以节省这一开销,再加上处理Integer与int的开销(如果您在编译时知道数组大小的话)。当然,性能差异可能可以忽

所以我正在为我目前正在学习的算法课程做一个项目。我在网上做一些研究,发现有些人在使用
ArrayList
,有些人在使用
int-array[]
。我的问题是,最小堆使用什么更好,为什么。该项目要求我从一个非常大的数字列表中保留列表中前10000个最大的数字,如果您在编译时知道数组大小的话。当然,性能差异可能可以忽略不计——但其思想是,
ArrayList
在内部实现为一个
对象[]
数组,因此您可以节省这一开销,再加上处理
Integer
int
的开销(如果您在编译时知道数组大小的话)。当然,性能差异可能可以忽略不计——但其思想是,
ArrayList
在内部实现为一个
对象[]
数组,因此您可以节省这一开销,再加上处理
Integer
int
的开销(如果您在编译时知道数组大小的话)。当然,性能差异可能可以忽略不计——但其思想是,
ArrayList
在内部实现为一个
对象[]
数组,因此您可以节省这一开销,再加上处理
Integer
int
的开销(如果您在编译时知道数组大小的话)。当然,性能上的差异可能可以忽略不计——但其思想是
ArrayList
在内部实现为
对象[]
数组,因此您可以节省这一开销,再加上处理
Integer
vs
int
一个
int[]
将比
阵列列表消耗更少的内存。这其中的一部分只是开销,它是由一个
整数添加而来的,该整数每个实例增加约16个字节。这涉及32位和64位JVM中各种对象和集合的内存影响。大约在9点30分,它谈论与每个物体相关的记忆。大约在11点15分,它讨论了各种类型(包括
Object
references)占用的内存量。 对于
int[]
,您有一个
对象(即
int[]
),它实际上包含所有单个
int
值作为连续内存。 对于
ArrayList
,您有
ArrayList
对象、
object[]
对象和所有
Integer
对象。此外,
Object[]
实际上并不包含连续内存中的
Integer
对象,而是包含连续内存中的对象引用。
Integer
对象本身位于堆的其他位置


因此,最终的结果是
ArrayList
需要大约6倍于
int[]
的内存量。备份
Object[]
int[]
占用相同的内存量(~40000字节)。10k
Integer
对象每个占用约20字节,总计200000字节。因此,与
int[]
大约40000字节相比,
ArrayList
将至少有240000字节。

一个
int[]
将比一个
ArrayList
消耗更少的内存。这其中的一部分只是开销,它是由一个
整数添加而来的,该整数每个实例增加约16个字节。这涉及32位和64位JVM中各种对象和集合的内存影响。大约在9点30分,它谈论与每个物体相关的记忆。大约在11点15分,它讨论了各种类型(包括
Object
references)占用的内存量。 对于
int[]
,您有一个
对象(即
int[]
),它实际上包含所有单个
int
值作为连续内存。 对于
ArrayList
,您有
ArrayList
对象、
object[]
对象和所有
Integer
对象。此外,
Object[]
实际上并不包含连续内存中的
Integer
对象,而是包含连续内存中的对象引用。
Integer
对象本身位于堆的其他位置


因此,最终的结果是
ArrayList
需要大约6倍于
int[]
的内存量。备份
Object[]
int[]
占用相同的内存量(~40000字节)。10k
Integer
对象每个占用约20字节,总计200000字节。因此,与
int[]
大约40000字节相比,
ArrayList
将至少有240000字节。

一个
int[]
将比一个
ArrayList
消耗更少的内存。这其中的一部分只是开销,它是由一个
整数添加而来的,该整数每个实例增加约16个字节。这涉及32位和64位JVM中各种对象和集合的内存影响。大约在9点30分,它谈论与每个物体相关的记忆。大约在11点15分,它讨论了各种类型(包括
Object
references)占用的内存量。 对于
int[]
,您有一个
对象(即
int[]
),它实际上包含所有单个
int
值作为连续内存。 对于
ArrayList
,您有
ArrayList
对象、
object[]
对象和所有
Integer
对象。此外,
Object[]
实际上并不包含连续内存中的
Integer
对象,而是包含连续内存中的对象引用。
Integer
对象本身位于堆的其他位置

因此最终的结果是
ArrayList
需要大约6倍于
int的内存量