List集合
List接口
Collection接口是集合框架的最顶层接口,描述的是集合框架中最共性的操作;在它下面有很多子接口和实现类,其中有两个子接口非常重要,是我们学习的重点,他们分别是List接口和Set接口,我们先来看List接口;
List接口介绍
总结:
- List集合都有下标;这个下标也是从0开始,和数组的下标一样;我们可以通过下标精确地操作某一个元素;
- List集合是有序的,迭代集合的顺序和添加元素的顺序一致;
- List集合允许保存重复的元素
List的特有方法
List接口是Collection接口的子接口,所以拥有Collection接口中规定的所有方法;
要单独定义一个接口来继承父接口,目的是对父接口的扩展;
List集合中保存的元素都具有顺序,List接口扩展的方法,主要是就是针对元素的位置设计的;
这些特有的方法主要可以分为以下几类:
添加方法
1、向指定位置插入一个元素
- 向指定位置插入多个元素
删除方法
1、删除指定位置的一个元素
修改方法
- 替换指定位置的元素
获取方法
1、获取指定位置的一个元素
2、获取指定区间的多个元素
- 获取指定元素在集合中第一次出现的位置
- 获取指定元素在集合中最后一次出现的位置
List的特有迭代器
为了遍历集合中的元素,Collection提供了一个迭代器Iterator;
List集合继承了Collection接口,所以也可以使用迭代器进行迭代;
但是Iterator使用时,光标只能从前往后移动,而且在迭代期间,不能修改集合中的元素;
而在list集合中的数据都具有索引,为了使用方便,对Iterator接口进行了扩展,得到一个新的列表迭代器接口,叫做ListIterator:
迭代器的使用演示:
通过索引遍历List集合
因为List集合中保存的数据都有索引,所以List集合的遍历可以使用普通for循环,通过索引获取元素;
注意:因为迭代器对象是具体的集合类创建的,所以具体的迭代器对象知道这个具体的集合类底层如何保存数据,如何遍历效率最高;所以开发中推荐使用迭代器迭代;
(如果使用的是ArrayList集合,直接使用for循环遍历效率就很高;)
List接口常用实现类介绍
list接口介绍完了,我们来说一说它的实现类;它的实现类也比较多,这里我们只介绍其中三个主要的实现类:
ArrayList;LinledList;Vector
ArrayList介绍
- List 接口的大小可变数组的实现:说明,这个集合底层使用一个可变的数组(默认创建一个数组,随着数据的添加,原来数组容量不够,就会创建一个新的更大的数组来替换原来的数组)来保存数据;
练习:自己实现一个类,里面使用可变数组保存数据;提供添加数据的方法(add),和一个获取数据容量(size);初始数组大小为5;
2、ArrayList集合可以保存null元素;
3、ArrayList是线程不安全的;