一、集合框架
之前我们学过数组,可以存储多个同类型的数据,但是使用时有缺陷:
1:数组长度固定不变,不能很好的适应元素数量动态变化的情况。
2:可通过.length获取数组长度,但是无法直接获取数组中实际存储的元素个数。
3:根据元素信息查找时需要一 一比较,效率低下。
因此java提供了比数组更灵活、更实用的集合框架。集合框架关系图。这里主要介绍四种集合(实线框里的),虚线框为接口,实线框为类。
1.Collection接口
Collection接口是最基本的集合接口,可以存储一组不唯一、无序的对象。List和Set接口继承自Collection接口,Map不继承Collection接口。
2.List接口
List接口继承Collection接口,可以存储一组不唯一、有序的集合。
List接口常用的实现类有ArrayList和LinkedList。
1)ArrayList类
ArrayList实现了长度可变的数组,而且采用和数组相同的存储方法,在内存中分配连续的空间。ArrayList集合中可以添加任何类型的数据,若创建集合是没有泛型,那么添加的数据都将转换成Object类型。
ArrayList存储示意图:
ArrayList常用方法,红色前边是返回的类型。
方法 | 说明 |
---|---|
boolean add(Object o) | 在列表的末尾顺序添加元素, 起始索引位置从0开始 |
void add(int index,Object o) | 在指定的索引位置添加元素。 索引位置必须介于0和列表中元素个数之间 |
int size() | 返回列表中的元素个数 |
Object get(int index) | 返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换 |
void set(int index,Object obj) | 将index索引位置的元素替换成obj元素 |
boolean contains(Object o) | 判断列表中是否存在指定元素 |
int indexOf(Object obj) | 返回元素在集合中出现的索引位置 |
boolean remove(Object o) | 从列表中删除元素o |
Object remove(int index) | 从列表中删除指定位置的元素,起始索引位置从o开始 |
removeAll(Collection o[ ]) | 从列表中删除数组o中的所有元素 |
clear() | 将列表中的所有元素均删除 |
isEmpty() | 判断集合是否为空 |
ArrayList的使用
public static void main(String[] args) {
//<&g