Java高级特性-第一章集合框架和泛型

1 查询标题

1.1 认识集合

如果想存储多个同类型的数据,可以使用数组来实现,但是使用数组存在如下明显的缺陷:

  1. 数组长度固定不变
  2. 可以通过数组名.length获取数组长度,却无法直接获取数组中实际存储的元素个数

Java的集合主要由Map接口Collection接口派生而来,其中Collection接口有两个常用的子类,即List接口Set接口
Java高级特性-第一章集合框架和泛型

1.2 List接口

Collection接口是最基本的集合接口,可以存储一组不唯一,无序的对象,List接口继承Collection接口,也就是所List可以存储一组不唯一,有序的对象
List接口常用的实现类由ArrayList和LinkedList

1.2.1 ArrayList类

针对数组的一些缺陷,java集合框架提供了ArrayList集合类,对数组进行了封装,实现了长度可变的数组,而且采用了和数组相同的存储方式,在内存中分配连续的内存空间,并且添加的的数据都会转换Object类型
ArrayList类提供了很多的方法如下:

方法 说明
boolean add(Object o) 将指定的元素添加到此列表的尾部。
void add(int index, E element) 将指定的元素插入此列表中的指定位置。
int size() 返回此列表中的元素数
E get(int index) 返回此列表中指定位置上的元素。
E set(int index, E element) 用指定的元素替代此列表中指定位置上的元素。
boolean contains(Object o) 如果此列表中包含指定的元素,则返回 true。
int indexOf(Object o) 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。
boolean remove(Object o) 移除此列表中首次出现的指定元素(如果存在)。
E remove(int index) 移除此列表中指定位置上的元素。

ArraryList的优点

  1. 使用使用索引直接获取元素
  2. 便利元素和随机访问元素的效率比较高

缺点:

  1. 采用里数组相同的存储方式,添加和删除都会造成后面所有元素移动

1.2.2 LinkedList类

LinkedList类是List接口的链表列表实现类,允许元素值是任何数据,包括null
LinkedList类采用链表方式存储数据,优点:

  1. 插入,删除元素效率比较高

缺点:

  1. 查询效率低下
方法 说明
void addFirst(E e) 将指定元素插入此列表的开头。
void addLast(E e) 将指定元素添加到此列表的结尾。
E getFirst() 返回此列表的第一个元素。
E getLast() 返回此列表的最后一个元素。
E removeFirst() 移除并返回此列表的第一个元素
E removeLast() 移除并返回此列表的最后一个元素。

1.3 Set接口

Set接口

1.4 Iterator接口

1.5 Map接口

1.6 Collections类

2 查询标题功能升级

2.1 认识泛型

2.2 深入泛型