Java基础复习笔记--集合知识总结(一)
一、List接口
1.Collection接口是List和Set接口的父类
2.List 接口存储一组允许重复,有序(插入顺序)的对象,有下标,插入顺序作为遍历的顺序
3.Set 接口存储一组唯一,无序的对象 没下标 插入的顺序跟遍历的顺序是不一样的
4.List接口中的功能方法
List 接口存储一组允许重复,有序(插入顺序)的对象(包括null),可以通过索引(下标)来进行访问
作用 | 方法名 |
---|---|
存储(添加) | |
boolean add(Object o) 继承自Collection | |
void add (int index,Object o) 加塞专用(有点类似于插队) | |
替换 | |
com.afinalstone.set(int index,Object o) | |
删除 | |
remove(Object o) 继承自Collection | |
remove(int index) | |
void clear() 继承自Collection | |
判断 | |
boolean contains(Object o) 继承自Collection,内部调用indexof实现 | |
boolean isEmpty() 继承自Collection | |
int indexOf(Object o) | |
int lastIndexOf(Object o) | |
获取 | |
int size() 继承自Collection | |
Object get(int index) | |
Object[] toArray() 继承自Collection |
二:List接口的三个常用实现类
类名 | 底层数据结构 | 线程是否安全 | 效率 | 增量值 |
---|---|---|---|---|
Vector(注:已基本不再使用) | 动态的数组结构 | 线程安全 | 无论增删还是查询都非常慢 | 默认初始容量为10,增量为10 |
ArrayList | 动态的数组结构 | 线程不安全 | 增删的效率很慢(因为要移动数据),但是随机查询的效率很高。 | 默认初始容量为10,增量未指定(经调试发现:原容量的50%) |
LinkedList | 链表数据结构 | 线程不安全 | ,对元素的增删的操作效率很高,随机查询的效率低(因为要移动指针寻址) | 默认初始容量为0,增量不明确 |
三、泛型 泛型即(Generic type),是Java 5新加入的特性
- 集合是可以存任意类型的数据,表面上看功能非常强大
- 存的时候很方便,取的时候困难重重 从集合中取数据时不知道该转换为什么类型,这叫类型安全问题
- 解决办法就是:让集合可以存任意类型的数据,但是只能存同一种
- 这就叫泛型
- 一个集合一旦指定了泛型,那么该集合就只能存同一种类型的数据,那么取数据的时候,就不用强转了
- 重要的事说三遍:泛型只支持引用数据类型,基本数据类型要使用它的包装类!泛型只支持引用数据类型,基本数据类型要使用它的包装类!泛型只支持引用数据类型,基本数据类型要使用它的包装类!————因为集合里面存入的只能是对象!
- JDK7以后新增了一个菱形写法
- 泛型的实现原理: 让数据类型参数化
- Java中实现的泛型是伪泛型 ,就是JVM是不支持泛型的,只是在编译的时候检查一下类型是否一致,编译通过会把
字节码中的泛型代码全部删掉(类型擦除)
linkedlist的意义
我们知道 ArrayList 是以数组实现的,遍历时很快,但是插入、删除时都需要移动后面的元素,效率略差些。而LinkedList 是以链表实现的,插入、删除时只需要改变前后两个节点指针指向即可,省事不少。
LinkedList的定义
LinkedList 是链表实现的线性表(双链表)。
双链表中的结点结构图
LinkedList 特点
- 双向链表实现
- 元素时有序的,输出顺序与输入顺序一致
- 允许元素为 null
- 要找到某个结点,必须从头开始遍历。(查询慢,增删快)
- 和 ArrayList 一样,不是同步容器
方法
其余方法与arraylist一样,只不过linkedlist多了6个链表相关的方法
由于linkedlist不是同步的,所以,想要线程安全的时候,需要直接在初始化时用 Collections.synchronizedList 方法进行包装:
感谢大佬
https://blog.****.net/u011240877/article/details/52876543
https://blog.****.net/qq_34149805/article/details/68943004
https://blog.****.net/qq_36711757/article/details/80411721
https://blog.****.net/abc6368765/article/details/77509169