【Java】Java容器篇(二),深入理解List集合类
文章目录
建议整个系列一起看(更新中):
增强for: https://blog.csdn.net/qq_45495857/article/details/109410980
泛型:https://blog.csdn.net/qq_45495857/article/details/109410912
Java容器篇(一),宏观了解:https://blog.csdn.net/qq_45495857/article/details/109524162
Java容器篇(二),深入理解List集合类: https://blog.csdn.net/qq_45495857/article/details/109529618
Java容器类(三),深入理解Set集合类: https://blog.csdn.net/qq_45495857/article/details/109536611
Java容器类(四),深入理解Map集合类https://blog.csdn.net/qq_45495857/article/details/109542428
Java容器类(五),深入理解迭代器: https://blog.csdn.net/qq_45495857/article/details/109548598
List承诺可以将元素维护在特定的序列中,List接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素
废话不多说,直接开门见山:
1.List接口
继承自Collection接口,在Java.util包下
特点:
- 元素有序(存入和取出的顺序一样)
- 有整数的索引
- 元素可以重复
特有功能(都是按索引进行操作的):
- void add(int index,E element):添加元素
- E remove(int index):删除元素
- E set(int index,E element)修改元素
- E get(int index): 获取元素
2.ArrayList
- 长于随机访问元素,但是在List的中间插入和移除元素时较慢,
- 底层是数组
- ArrayList的Object数组初始化长度为
10
,如果我们存储满了这个数组,需要存储第11个对象,就会定义新的长度更大的数组,并将原数组内容和新的元素一起加入到新数组中,源码如下
3.LinkedList
-
底层双向链表结构
-
查询快,增删慢
-
特性集较ArrayList更大
特有方法:
- void addFirst(E e):将元素添加到开头
- void addLast(E e):将元素添加到末尾
- E getFirst():获取开头元素
- E getLast():获取结尾元素
- E removeFirst():删除第一个元素,并返回删除的元素
- E removeLast():删除最后一个元素,并返回删除的元素
4.如何选择使用哪种List集合(根据数据结构特点)
- 尽量避免使用Vector
- 查询多,增删少,用ArrayList
- 查询少,增删多,用LinkedList
- 默认用ArrayList
- CopyOnWriteArrayList是List的一个特殊实现,专门用于并发编程
5.List集合的遍历
- foreach
- for
- 迭代器
迭代器后面专门讲
// 以上就是本篇List集合的内容,希望能够帮助到大家