目录
Java SE文章参考:Java SE入门及基础知识合集-CSDN博客
List 接口
1. 特性描述
List 接口常用方法
2. ArrayList
示例及源码解读
- ArrayList 继承于 AbstractList , AbstractList 继承于 AbstractColletion
- ensureCapacityInternal(int minCapacity) 确保数组有足够的容量来存储新添加的数据
- void grow(int minCapacity) 实现数组扩容,扩容至原来的1.5倍
- ListItr 可以从前到后对集合进行遍历,也可以从后往前对集合进行遍历,还可以向集合中添加元素,修改元素。而 Itr 只能从前到后对集合进行遍历。
ArrayList底层采用的是数组来存储元素,根据数组的特性, ArrayList 在随机访问时效率极高,在增加 和删除元素时效率偏低,因为在增加和删除元素时会涉及到数组中元素位置的移动。 ArrayList 在扩容 时每次扩容到原来的 1.5 倍
3. LinkedList
示例及源码解读
单向链表
双向链表
- LinkedList 继承于 AbstractSequentialList , AbstractSequentialList 继承于 AbstractList , AbstractList 继承于 AbstractColletion
- void addFirst(E e) 将数据存储在链表的头部
- void addLast(E e) 将数据存储在链表的尾部
- E removeFirst() 移除链表头部数据
- E removeLast() 移除链表尾部数据
LinkedList底层采用的是双向链表来存储数据,根据链表的特性可知, LinkedList 在增加和删除元素时 效率极高,只需要链之间进行衔接即可。在随机访问时效率较低,因为需要从链的一端遍历至链的另一 端。
4. 栈
练习
从控制台录入5 位学生信息:姓名,性别,年龄,成绩,并将这些学生信息以 "," 衔接起来,然后存储至文本中。然后再从文本中将这些信息读取至集合中。