HashSet、Vector、LinkedList 的最大大小
2022-09-01 10:17:57
的最大大小是多少 , ?我知道可以存储超过3277000个号码。HashSet
Vector
LinkedList
ArrayList
但是,列表的大小取决于内存(堆)大小。如果它达到最大值,JDK 将抛出一个 .OutOfMemoryError
但是我不知道 、 和 中的元素数的限制。HashSet
Vector
LinkedList
的最大大小是多少 , ?我知道可以存储超过3277000个号码。HashSet
Vector
LinkedList
ArrayList
但是,列表的大小取决于内存(堆)大小。如果它达到最大值,JDK 将抛出一个 .OutOfMemoryError
但是我不知道 、 和 中的元素数的限制。HashSet
Vector
LinkedList
这些结构没有指定的最大大小。
实际的实际大小限制可能位于区域(即2147483647,大约20亿个元素)的某个地方,因为这是Java中数组的最大大小。Integer.MAX_VALUE
HashSet
HashMap
HashMap
Integer.MAX_VALUE
HashMap
HashMap
HashSet
Vector
Integer.MAX_VALUE
LinkedList
LinkedList
Integer.MAX_VALUE
int
size()
int
请注意,虽然集合
API 确实定义了具有多个元素的 应如何运行。最重要的是,它声明了size()
文档:Collection
Integer.MAX_VALUE
如果此集合包含多个元素,则返回 。
Integer.MAX_VALUE
Integer.MAX_VALUE
请注意,虽然 ,并且似乎支持多个元素,但这些元素都没有以这种方式实现该方法(即它们只是让内部字段溢出)。HashMap
HashSet
LinkedList
Integer.MAX_VALUE
size()
size
这使我相信,在这种情况下,其他操作也没有明确定义。
因此,我想说的是,将这些通用集合与元素一起使用是安全的。如果您知道需要存储更多内容,那么您应该切换到实际支持此功能的专用集合实现。Integer.MAX_VLAUE
在所有情况下,您都可能受到 JVM 堆大小的限制,而不是其他任何限制。最终,你总是会深入到数组,所以我非常怀疑它们中的任何一个会管理超过231 - 1个元素,但无论如何,你都非常非常有可能在那之前用完堆。