Java集合框架的由来:
Java最初版本只为最常用的数据结构提供了很少的一组类:比如Vector、Stack、Hashtable、BitSet、Enumerrationr接品,其中Enumerrationr接口提供了一种用于访问任意容器中各个元素的抽象机制。这是一种很明智的选择,但要想建立一个全面的集合类库还需要大量的时间和高超的技能。
随着Java SE 1.2的问世,设计人员感到是推出一组功能完善的数据结构的时机到了,面对一大堆相互矛盾的设计策略,他们希望让类库规模(STL)小且易于学习,而不希望像C++的标准模板库那样的复杂,但却又希望得到STL率先推出的泛型算法所具有的优点,他们希望将传统的类融入新的框架中,与所有的集合类设计者一样,他们必须做出一些艰难的选择,于是,他们在整个设计过程中,做出了一些独具特色的设计决定。
为什么会存在容器类?容器类(集合类)可以存储多个数据,既然数组可以存储多个数据,那为什么还要定义容器类?
因为数组存在一些弊端:长度是不可变的,一旦数线初始化之后,长度是固定的;
在N个地方需要存储多个数据,都得专门去编写数组的操作方法,如此一来,没有体现DRY原则;
即使每一个人都要使用到数组类,但是不同的人定义的类名和方法名是不同的,实现细节也是参差不齐的。
什么是集合框架?
尽管上面讲到的容器类非常好用,但是却不能集中和统一管理。集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口,接口的实现和对集合运算的算法(底层都对应着某一种数据结构的算法)。
为什么需要集合框架(把集合框架的类和接口都放在java.util包中)?提供功能的复用;
让程序猿专业于业务的开发,而不是数据结构和算法。
Java集合框架
常用的框架接口规范:Set(集):集合的对象不按特定方式排序,不允许元素重复;
List(列表):集合中的对象按照索外位置排序,允许元素重复;
Map(映射):集合中每一个元素都包含一对key和value对象,不允许key对象重复,值 对象可以重复。
常用的集合类