象的接口组成。不同接口描述不同类型的组。在很大程度上,一旦您理解了接口,您就理解了框架。虽然您总要创建接口特定的实现,但访问实际集合的方法应该限制在接口方法的使用上;因此,允许您更改基本的数据结构而不必改变其它代码。框架接口层次结构如下图所示。
Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念:1)Collectio
。一组对立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set不能有重复元素。2)Map。一组成对的“键值对”对象。初看起来这似乎应该是一个Collectio
,其元素是成对的对象,但是这样的设计实现起来太笨拙了,于是我们将Map明确的提取出来形成一个独立的概念。另一方面,如果使用Collectio
表示Map的部分内容,会便于查看此部分内容。因此Map一样容易扩展成多维Map,无需增加新的概念,只要让Map中的键值对的每个“值”也是一个Map即可。Collectio
和Map的区别在于容器中每个位置保存的元素个数。Collectio
每个位置只能保存一个元素(对象)。此类容器包括:List,它以特定的顺序保存一组元素;Set则是元素不能重复。Map保存的是“键值对”,就像一个小型数据库。我们可以通过“键”找到该键对应的“值”。Collectio
对象之间没有指定的顺序,允许重复元素。
fSetListMap
对象之间没有指定的顺序,不允许重复元素对象之间有指定的顺序,允许重复元素并引入位置下标。接口用于保存关键字(Key)和数值(Value)的集合,集
合中的每个对象加入时都提供数值和关键字。Map接口既不继承Set也不继承Collectio
。List、Set、Map共同的实现基础是Object数组除了四个历史集合类外,Java2框架还引入了六个集合实现,下表所示。如
接口Set
实现HashSetTreeSet
历史集合类
List
ArrayListLi
kedList
VectorStackHashtableProperties
Map
HashMapTreeMap
这里没有Collectio
接口的实现,接下来我们再来看一下下面的这张关于集合框架的大图:这张图看起来有点吓人,熟悉之后就会发现其实只有三种容器:Map,List和Set,它们各自有两个三个r