java集合框架 框架设计理念 容器 继承层级结构 继承图 集合框架中的抽象类 主要的实现类 实现类特性 集合框架分类 集合框架并发包 并发实现类
什么是容器?
由一个或多个确定的元素所构成的整体叫做集合。
容器用来包装或装载物品的贮存器 (如箱、罐、坛)或者成形或柔软不成形的包覆材料。
在Java中的Collection框架,有的人叫做集合有的叫做容器,不管怎么叫基本上也离不开"把元素装起来"这个本质.
我们的世界里面丰富多彩,有各种各样的事物,很多事物都会有他的容器
人的生活自然也离不开各种容器,喝水需要杯子,吃饭需要碗,煮汤需要锅,这都是容器;
容器有各种各样的形状,也有各种各样的特性;
比如茶杯有的有盖子,有的没有盖子,水壶可以从壶嘴往外倒水等
java是面向对象的语言,万事万物皆是对象,纵然有着千姿百态的各种不同类型
所以想要在java对象中更加畅快的使用对象,自然也是需要容器的;
为什么要有容器?
按照容器的概念,数组也是一种容器,可以用于存放一个或者多个元素;
可是,数组只能保存同一种类型的元素,而且长度是固定的;
人们自然希望可以有一种容器能够保存各种不同的类型的元素,并且长度是不固定的;
这也是集合框架设计的初衷;
提供一种可以保存多种类型元素,并且长度不受限制的容器,来更加方便的保存对象;
所以java中的容器也就是java世界里面承装对象的器皿.
JAVA集合框架本质容器根本属性在于存/取,以及一些其他的附加的操作.
容器内部有其摆放形式:排成一行还是扔到一堆?
也有他的存取顺序:先进先出还是先进后出的被压倒最下面?
这是抽象的描述
对应到计算机科学的世界里面,那即是数据结构与算法的描述
数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成
数据结构中有线性结构,树形结构等,形式有队列 栈 键值对 等
至此,可以这么理解编程语言中的集合框架:
集合框架目的就只是为了盛装对象,操作对象
本质就是Java语言,针对于容器这一概念,数据结构与算法的描述实现.
比如
LinkedList 他就是java语言对于双向链表的一种描述,如果你懂双向链表的原理,并且懂得java的语法,你也可以实现一个LinkedList
集合框架的层级结构当然,并不是说你用Java编写一个双向链表就是写出来集合框架了Java是面向对象的语言,面向对象的三大基础特征,封装继承多态嘛想要给一门编程语言提供一个集合框架,自然不是写几个算法数据结构这么简单的事情Java中的集合框架是自顶而下设计的如同所有的对象的祖宗都是Object一样集合框架自然也是有祖宗的,那就是Collection 这就表示集合 ,在Java中用来存储元素的容器
不过也还有另外一派,叫做Map ,如官方文档中描述的那样,Map并不算是集合,只不过是一种操作数据的结构而已但是Map也提供了类似集合似的存取元素,元素操作等功能广义上按照我们之前说的集合/容器的概念去理解的话,自然他也可以算得上是Java集合的一份子所以一般都是把Map和Collection统称为Java的集合体系的鉴于Java语言的特性,集合体系中这些用于刻画家族脸谱的东西,自然都是接口,除非特别指明,所提到的类型均为接口
Collection中是一组独立的元素而Map中则是一组成对的键值对元素
一组独立的元素,Collection,中又可以按照有序的列表和无序的集,这就是List 和Set当然还有Queue,队列其实话说回来,为何Queue直接继承自Collection?有序和无序的并集不就已经是整体了么队列不也算是一种特殊的List么,的确队列是一种特殊的List,而且,常用的实现类LinkedList
列表(List):List集合区分元素的顺序,允许包含相同的元素,访问集合中的元素可以根据元素的索引来访问。