1.数组
1.1 ArrayList
优点:查找快,删除快
缺点:扩容差;删除和添加元素时,开销大(需要移动大量元素)
1.2 自定义一个ArrayList,底层需要维护一个数组
所需功能:
(1)添加:addFirst(E e) addLast(E e) add(int index, E e)
(2)删除: remove(int index) remove(E e)
(3)是否包含某个元素: contains(E e)
(4)长度(元素个数)
(5)修改:set(int index,E e)
(6)获取元素: get(int index)
(7)获取下标: getIndex( E e)
(8)扩容: 设置最大容量为Integer.MAX_VALUE-8, 扩容为原数组的1.5倍,当扩容大于最大容量时,扩容为最大容量;当扩容小于默认容量时,扩容为默认容量。
所需成员变量:
(1)arrayList [] elementdata 数组
(2)size 元素个数
(3)capacity 数组容量/数组长度(固定长度)
1.3 栈 stack
特点:先进后出,后进先出,只能操作栈顶元素
功能:
void push(E e) 入栈
E pop() 出栈
E peek() 获取栈顶元素
1.4队列 queue (排队)
特点:先进先出
功能:
enqueue(E e) 入队
dequeue (E e)出队
getFront() 获取头部元素
getSize() 获取长度
2.单向链表(物理上不连续,逻辑上连续)
特点:一个节点(node)记录了下一个节点的位置信息(next),只能从前面往后面查询,需要记录头节点。
功能:
从头部添加元素
删除
修改