什么是最大尺寸HashSet,Vector,LinkedList?我知道ArrayList可以存储超过3277000个数字。
HashSet
Vector
LinkedList
ArrayList
但是,列表的大小取决于内存(堆)的大小。如果达到最大值,则JDK会抛出一个OutOfMemoryError。
OutOfMemoryError
但我不知道中的元素数量的限制HashSet,Vector和LinkedList。
这些结构没有指定的最大大小。
实际的实际大小限制可能在大约某个区域内Integer.MAX_VALUE(即2147483647,大约20亿个元素),因为这是Java中数组的最大大小。
Integer.MAX_VALUE
HashMap
int
size()
请注意,尽管CollectionAPI 确实 定义了元素Collection多于a的Integer.MAX_VALUE行为。更重要的是它指出此的size()文档:
Collection
如果此集合包含多个Integer.MAX_VALUE元素,则返回Integer.MAX_VALUE。
请注意,虽然HashMap,HashSet并且LinkedList 似乎 支持多Integer.MAX_VALUE元素, 没有 那些实施size()这种方式方法(即它们只是让内部size字段溢出)。
size
这使我相信在这种情况下其他操作 也不 是很明确。
所以我想说,将那些通用集合与 最多 元素一起使用是 安全的 。如果您 知道 需要存储更多存储空间,则应切换到实际支持此功能的专用集合实现。 Integer.MAX_VLAUE
Integer.MAX_VLAUE