一、集合与Collection
1、概念:对对象进行存储,如果对象个数不确定,就出现了集合容器进行存储。
2、特点:
(1)用于存储对象的容器;
(2)集合的长度是可以变化的;
(3)集合中不可以存储基本数据类型值。
3、集合框架
集合容器因为内部的数据结构不同,有多种具体容器,不断向上抽取,就形成了集合框架。框架的顶层就是Collection接口。
4、Collection的常见方法:
(1)增加
boolean add(Object o)
boolean addAll(Collection coll)
(2)删除
remove、removeAll(删除二者集合的交集)、clear
(3)判断
contains、containsAll、isEmpty
(4)获取
size(集合大小)、iterator(迭代器)
(5)其他
retainAll(取交集)、toArray(集合转数组)。
二、迭代器
1、原理:每一个容器内部的数据结构不同,所以该迭代器对象应该是在容器内部实现的。对于使用容器而言,具体的实现不重要,只要通过容器获取到该实现的迭代器对象即可,也就是iterator方法。
2、典型方法
Collection c1 = new ArrayList(); //创建一个ArrayList容器c1
// c1.iterator()调用该容器中的方法,返回迭代器对象,相应的调用对象中操作内容的方法
for(Iterator it = c1.iterator();it.hasNext();)
{
System.out.println(it.next());
}
个人理解: Collection和Iterator都是接口,Collection接口里面放着所有类型容器都有的方法(向上抽取得到),Iterator接口内放着处理容器内容hasNext、next等抽象方法。任意一个类型的容器,都实现了Collection和Iterator接口内容,并对上面的接口中的方法进行覆写,针对自身容器特点进行数据元素操作。类似于,容器类似于抓娃娃机,里面的爪子就是迭代器,但是只是提供外部的操纵杆对内进行操作。
三、集合框架体系
1、框架图
图中虚线框都表示接口,实线框表示类。
2、集合总掌门Collection
|–左膀List:有序(存入和取出顺序一致),有索引,元素可重复。
|–左派ArrayList:内部是数组数据结构,不同步,查询速度快。
|–左派LinkedList:内部是链表数据结构,不同步,增删速度快。
|–右臂Set:无序、无索引、元素不可重复。
|–右派HashSet:内部数据结构是哈希表,不同步。
|–右派LinkedHashSet:内部是链表和哈希表结构,并且变成有序了。
|–右派TreeSet:可以对Set中的元素进行排序,不同步。