Java的ArrayList
特点
- 底层实现是数组,支持随机访问,时间复杂度为 O(1)。
- 可以自动扩容,当数组容量不足时会自动增加容量。
- 允许插入 null 元素。
- 不是线程安全的,如果多个 线程 同时操作同一个 ArrayList 对象,可能会出现并发问题。
- 可以存储任意类型的对象,包括基本类型的包装类。
- 可以通过索引访问元素,也可以通过迭代器遍历元素。
- 支持动态添加和删除元素,但是删除元素时会导致数组元素的移动,时间复杂度为 O(n)。
Tip
由于 ArrayList 的底层实现是数组,所以它的查询和修改操作比较快,但是插入和删除操作比较慢,特别是在数组的中间位置进行操作时,需要移动大量元素。因此,在需要频繁进行插入和删除操作的情况下,建议使用 LinkedList 等其他数据结构来代替 ArrayList。