- ArrayList初始容量为10 扩容后的大小 = 原始大小+原始大小的1/2(jdk各个版本不一致)
- LinkedList是一个双向链表,没有初始化大小,也没有扩容机制,可以一直在前面或者后面新增就行
- HashMap初始化大小是16,扩容因子默认0.75
- 数组从0开始编号
- 数组可以随机访问
- 数组是一种线性表数据结构,他用一组连续的内存空间,来存储一组具有相同类型的数据
- 线性表。就是数据像是排成一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。
- 连续的内存空间和相同类型的数据。
- 正是因为这两个限制,实现了随机访问
- 也让很多操作效率降低,如果想在数组中插入
- 容器能否完全代替数组??
- ArrayList和数组(Array)比有什么优势呢
- ArrayList最大的优势就是可以将很多数组操作的细节封装起来。支持动态扩容,也可以自己指定大小
- 数组每次定义之前都要指定大小,因为需要连续的内存空间,如果内存不够用,我们就会重新分配一块儿更大的空间,将原来的数据复制过去,然后再将新的数据插入。
- 数组与ArrayList的几点区别:
- ArrayList无法存储基本类型,比如int,long,需要封装为Integer、Long类,而Autoboxing、Unboxing则有一定的性能消耗,如果特别关注性能,或者希望使用基本类型可以选用数组
- 如果数据大小实现已知,并且对数据的操作非常简单,用不到ArrayList提供的大部分方法,也可以直接使用数组
- 表示多为数组时,用数组往往会更加直观。比如Object[][]array 而用容器的话则需要这样定义 ArrayList<ArrayList> array
做业务使用容器足够了,如果是偏向底层的开发网络框架啥的 这个时候数组就会优于容器,成为首选