ArrayList
ArrayList 是 Java Collections Framework 中一个重要的数据结构,它实现了 List 接口。它允许你存储和检索按索引排序的元素。ArrayList 的底层实现是一个动态数组,它可以根据需要自动调整大小。
ArrayList 的默认大小为 10。这意味着当创建一个新的 ArrayList 时,它将创建一个具有 10 个元素容量的底层数组。如果添加到 ArrayList 中的元素数量超过其容量,ArrayList 将创建一个具有更大容量的新数组(通常是当前容量的两倍),并将元素复制到新数组中。
你可以使用以下构造函数指定 ArrayList 的初始容量:
ArrayList(int initialCapacity)
例如,以下代码创建一个初始容量为 20 的 ArrayList:
ArrayList<String> list = new ArrayList<>(20);
HashMap
HashMap 是 Java Collections Framework 中一个重要的数据结构,它实现了 Map 接口。它允许你存储和检索键值对,其中键是唯一的。HashMap 的底层实现是一个哈希表,它使用哈希函数将键映射到数组索引。
HashMap 的默认大小为 16。这意味着当创建一个新的 HashMap 时,它将创建一个具有 16 个桶的底层数组(哈希表)。每个桶都是一个链表,其中存储着哈希到该桶的所有键值对。
你可以使用以下构造函数指定 HashMap 的初始容量:
HashMap(int initialCapacity)
例如,以下代码创建一个初始容量为 32 的 HashMap:
HashMap<String, Integer> map = new HashMap<>(32);
选择合适的默认大小
ArrayList 和 HashMap 的默认大小经过仔细选择,以在大多数情况下提供良好的性能。但是,在某些情况下,你可能需要调整默认大小以优化你的应用程序的性能。
- 对于 ArrayList:如果你知道 ArrayList 将包含大量元素,则可以在创建时指定一个更大的初始容量。这将避免 ArrayList 在添加元素时多次增加其容量,从而提高性能。
- 对于 HashMap:如果你知道 HashMap 将包含大量键值对,则可以在创建时指定一个更大的初始容量。这将减少哈希冲突并提高查找和插入操作的性能。
结论
ArrayList 的默认大小为 10,而 HashMap 的默认大小为 16。这些默认大小经过仔细选择,以在大多数情况下提供良好的性能。但是,在某些情况下,你可能需要调整默认大小以优化你的应用程序的性能。