Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中
本次主要写的是:
- Collection
- List
- ArrayList
- LinkedList
- Set
- HashSet
- TreeSet
- List
- Map
- HashMap
- TreeMap
Collections --> 提供了对集合进行排序、便利等多种算法实现
Collection接口的常用方法
- 集合作为容器应该具有的功能(增,删,改,查),
- 不一定全有。
- 集合的基本操作:增加,删除,判断,取出
List不Set接口
- Collection 接口存储一组丌唯一,无序的对象
- List 接口存储一组丌唯一,有序(插入顺序)的对象
- Set 接口存储一组唯一,无序的对象
- Map接口存储一组键值对象,提供key到value的映射
List接口的实现类
- List特点:有序,丌唯一(可重复)
- ArrayList实现了长度可变的数组,在内存中分配连续的空间。
– 优点:遍历元素和随机访问元素的效率比较高
– 缺点:添加和删除需要大量移动元素效率低,按照内容查询效率低 - LinkedList采用链表存储方式。
– 优点:插入、删除元素时效率比较高
– 缺点:遍历和随机访问元素效率低下
List接口特有的方法
凡是可以操作索引的方法都是该体系特有方法
Iterator 接口
-
所有实现了Collection接口的容器类都有一个iterator方法用以返
回一个实现了Iterator接口的对象。 -
Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历
操作。 -
Iterator接口定义了如下方法:
boolean hasNext(); //判断是否有元素没有被遍历
Object next(); //返回游标当前位置的元素并将游标移动到下一个位置
void remove(); //删除游标左面的元素,在执行完next之后该操作只能执行一次
Iterator接口
-
所有的集合类均未提供相应的遍历方法,而是把遍历交给迭代器
完成。迭代器为集合而生,与门实现集合遍历 -
Iterator是迭代器设计模式的具体实现
-
Iterator方法
-
boolean hasNext():判断是否存在另一个可访问的元素
-
Object next():返回要访问的下一个元素
-
void remove():删除上次访问返回的对象
-
可以使用Iterator遍历的本质是什么?
– 实现Iterable接口
Iterator
- For-each循环
- 增强的for循环,遍历array或Collection的时候相当简便
- 无需获得集合和数组的长度,无需使用索引访问元素,无需循环条件
- 遍历集合时底层调用Iterator完成操作
- For-each缺陷
- 数组:
▪ 不能能方便的访问下标值
▪ 不要在for-each中尝试对变量赋值,只是一个临时变量 - 集合:
▪不使用Iterator相比,丌能方便 的删除集合中的内容
- 数组:
- For-each总结
- 除了简单的遍历并读出其中的内容外,丌建议使用增强for
为什么需要ListIterator
在迭代过程中,准备添加或者删除元素
ArrayList al=new ArrayList();
a1.add("java1");//添加元素
a1.add