前面咱们讲到了集合的定义以及集合的 Iterator。咱们知道集合分为 Collection和 Map,今天咱们的重点是学习 Collection。编程
咱们再来回顾一下集合解决了什么问题:在编译期间不知道要多少个对象,可是数组必须在申明的时候明确指明数组长度,若是使用数组,申请太多的空间就会形成资源浪费,若是申请太少空间,就不够用,因此引出了一个概念叫“集合”。数组
从这里咱们能够看出,集合的特性有:数据结构
所以,咱们能够理解集合是一个高级的数组。可能这种说法不太合理,那我换个说法吧,集合是许多个体组织成的一个总体。学习
既然是总体,那么确定有增删改查等各类操做,咱们前面在面向对象的理解中讲了接口的理解:接口就是对一个对象的行为进行规范,使对象具备作某些事情的能力。集合自己只是用来存储数据的,若是须要具备增删改查功能,确定是用接口来扩展。很少说了,咱们来看代码。.net
不看代码了,Collection 就是一个接口,定义了集合的行为规范,咱们直接看类结构图就好。设计
#集合的抽象实现类 AbstractCollection
AbstractCollection是全部 Collection 系集合的父类。从类结构上来看,List、Set 系列的集合都继承自 AbstractCollection。3d
AbstractCollection 没有太多的代码,主要实现了 Collection 接口方法。其实这个类设计仍是蛮有意思的。仅仅抽象了两个方法iterator()和size(),其他全部的操做都在AbstractCollection 里面实现了,在数据结构都不清楚的状况下,仅仅经过 iterator 就实现了对集合的增删改查。若是是咱们本身来设计一个集合,可否在不清楚数据结构的状况下,就写出对集合的增删改查方法的具体实现呢?我想这就是面向对象编程 OOP 的魅力所在吧。cdn
接下来我会根据 List、Set、Queue 三个 Collection 接口的继承接口来学习 Collection 集合的各类实现。对象