1.Array和ArrayList的区别是什么?
Array是数组 ArrayList是类
Array是定长的(需要手动扩容),ArrayList长度可变(使用过程中自动扩容)ArrayList的底层是Array
2.ArrayList和LinkedList的区别是什么?
1.底层数据结构实现︰ArrayList底层数据结构是动态数组,而 LinkedList的底层数据结构是双向链表
2.随机访问(即读)效率∶ArrayList比LinkedList在随机访问的时候效率要高,因为ArrayList底层是数组,可以通过索引号快速访问,LinkedList是通过二分查找法逼历链表节点进行查找的
3.增加和删除效率∶在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高,因为ArrayList
增删操作需要大量的前移或后移,这个过程中涉及到大量的赋值操作比较耗时间,LinkedList只需要修改节点对象的左右指针即可。4.内存空间占用:LinkedList 比 ArrayList更占内存,因为 LinkedList
的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。
5.综合来说,在需要频繁读取集合中的元素时,更推荐使用ArrayList,而在插入和删除操作较多时,更推荐使用 LinkedList。
你知道几种逼历ArrayList的方式
整理ArrayList和LinkedList的常用方法
3.你知道几种遍历ArrayList的方式
- 普通for循环
2.增强型for循环
3. ForEach循环
隐式循环 ,循环存在,在forEach函数中forEach函数会遍历list取出每一个元素他会回调你的箭头函数,并把值传递给箭头函数的参数
4.迭代器
调用iterator()方法,返回一个迭代器对象
4.整理ArrayList和LinkedList的常用方法
ArrayList的常用方法
add(int) 在数组尾部的第一个不为空的位置添加
add(int,e) 在数组中的指定位置插入
set(int,e) 修改数组的指定位置
remove(int) 根据索引号移除
remove(Object) 根据指针移除,如果存在多个只会移除第一个
get(int) 根据指定的索引号找到某个元素并返回
LinkedList的常用方法
增
- addFirst(E) 在头部添加
- addLast(E) 在尾部添加
- add(E)
- add(int,E) 在指定位置插入
链表在中间插入的速度要优于数组,只需要找到插入位置的节点,创建新节点然后修改指针即可
数组在尾部插入更快,但是在首部或者中间插入,比较慢因为需要后移
删
- removeFirst() 删除头部
- removeLast() 删除尾部
- remove(int index) 根据指定位置删除
- remove(Object 0) 根据指定元素删除
改
- set(int E)检查下标是否越界,不能大于size
查
get(int)链表并没有索引的机制,底层通过遍历链表然后通过二分查找法找到指定位置的节点。并返回节点中的iten