【Java集合系列】---总体框架

集合--童年的美好时光

集合,忽然让小编想起那段美好的学生时光,集合第一次遇见她的时候,小编当年还是一个懵懂的丫头,也不曾想过会在计算机的世界再次相遇,再回首,集合在数学中是一个基本概念,集合就是“一堆东西”,集合里面的“东西”叫做元素,由一个或多个元素所构成的叫做集合,又邂逅,计算机的世界中,集合是一组可变数量的数据项也可能是0个的组合,这些数据项可能共享某些特征,需要以某种操作方式一起进行操作,一般来说,这些数据项的类型都是相同的,或者基类相同(若使用的语言支持继承),列表或数组通常不认为是集合,因为其大小固定,但是事实上她常常在实现中作为某些形式的集合使用。

世界上本没有集合,因为有了这样的需求

世界上本来没有集合,但是由于有了这样的需求,所以有了集合。在编程的时候,常常需要集合中存放多个数据,当然我们可以使用数组来保存多个对象,但是数组的长度是不可以变化的,一旦在初始化数组的时候指定了数组的长度,则这个数组长度是不可变的,如果需要保存个数变化的数据,数组就有点无能为力了,而且数组无法保存具有映射关系的数据,如英语-90,数学-88,这种数据看上去像两个数组,但是这两个数组的元素之间存在着一定的关联关系,为了保存数量不确定的数据,以及保存具有映射关系的数据,也称为关联数组,java提供集合类,集合类主要干的活儿就是保存、盛装其她数据,因此集合类也称为容器类。

故人--数组

要深入理解集合,我们首先要做的就是了解一下我们的故人--数组,数组是大小固定的,并且同一个数组只能存放类型一样的数据,基本类型或者是引用类型,而java集合可以存储和操作数目不固定的一组数据,所有的JAVA集合都位于java.util包中,JAVA集合只能存放引用类型的数据,不能存放基本数据类型。java集合类是一种工具类,她可以用于存储数量不等的多个对象,并可以实现常用的数据结构,如栈、队列等等,除此之外,Java集合还可以用来保存具有映射关系的关联数组,java的集合大致上可以分为Set、List和Map三种体系,从JDK1.5以后,Java增加了Queue体系集合,代表一种队列集合实现。有人想有可以自动扩展的数组,所以有了List,有人想有没有重复的数组,所以有了set,有人想有自动排序的数组,所以有了TreeSet,所以任何事物都不是凭空的产生的,她可是都有自己存在的价值的哦`(*∩_∩*)′。

     Collection集合体系

  java集合主要可以划分为四个部分,List、Set、Map、工具类(Iterator迭代器、Enumeration枚举类、Arrays和VCollections),java的集合类主要由两个接口派生而来,Collection和Map,她们两个是集合框架的根接口,这两个接口又包含了一些子接口或实现类,我们通过类图来帮助我们理解他们之间的关系,首先我们来看Collection集合体系的继承树,如下图所示:

       

上面的类图画的是Collection体系里的集合,其中Set和List接口是Collection接口派生的两个子接口,她们分别代表了无序集合和有序集合,Queue是Java提供的队列实现,有点类似于List。

Map集合体系

接着我们来看Map体系的继承树,所有的Map实现类用于保存具有映射关系的数据。

            

上面的类图画的是Map接口的众多实现类,这些实现类在功能、用法上存在一定的差异,但是她们都有一个功能特征,Map保存的每项数据都是key-value对,也就是由于key和value两个值组成,就像前面介绍的英语-90,数学-88,每项成绩都是由2个值组成的,学科名称和成绩,对于一张成绩表而言,科目通常不会重复,但是成绩是可以重复的,通常习惯根据学科名称来查询成绩,而不会根据成绩来查询学科名称,Map也与此类似,Map里的key是不可以重复的,key用来标识集合里的每项数据,如果需要查询Map中数据时,总是根据Map的key来获取。

Set&&List&&Map

根据上面的类图,我们可以把java的所有集合分成三大类,其中Set集合类类似于一个糖罐子,把一个对象添加到Set集合里面的时候,Set集合无法记住添加这个元素的顺序,所以Set里面的元素不能重复,否则系统无法准确识别这个元素;List集合非常像一个数组,她可以记住每次添加元素的顺序,可以重复,只是List的长度可变;Map集合也像是一个糖罐子,只是她里面的每项数据都由两个值组成。如果访问List集合中的元素,可以直接根据元素的索引来进行访问;如果需要访问Map集合中的元素,可以根据每项元素的key来访问其value;如果访问Set集合中的元素,则只能根据元素本身来访问,这也是Set集合里元素不允许重复的原因。前面我们提到过,java集合主要可以划分为四个部分,List、Set、Map、工具类(Iterator迭代器、Enumeration枚举类、Arrays(Collections),Iterator接口也是java集合框架的成员,但她与Collection系列、Map系列的集合不一样,Collection集合系列和Map集合系列主要用于盛装其她对象,而Iterator则主要用于遍历即迭代访问Collection集合中的元素,Iterator对象也称为迭代器。Iterator是遍历集合的工具,我们说Collection依赖于Iterator,是因为Collection的实现类都要实现iterator()函数,返回一个Iterator对象。除此之外,还有两个工具类Arrays和Collections,她们是操作数据、集合的两个工具类。

小编寄语:该博文,小编主要简单介绍了java集合中的总体框架,从我们学生时代的集合说起,到计算机中的集合,鲁迅说世界上本没有路,走的人多了也便有了路,今天小编说,世界上本没有集合,有了这样的需要,也是有了集合,有了上面的整体框架之后,接下来小编会对每个类分别进行分析,希望对有需要的小伙伴有帮助,还请小伙伴们多多指教,敬请期待`(*∩_∩*)′。

时间: 2024-09-30 12:01:17

【Java集合系列】---总体框架的相关文章

Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例  Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理.解决办法)  Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列06之 Vector详细介绍(源码解析)和使用示例 Java 集合系列07之 Stack

Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例

概要  前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类--LinkedList.和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括:第1部分 LinkedList介绍第2部分 LinkedList数据结构第3部分 LinkedList源码解析(基于JDK1.6.0_45)第4部分 LinkedList遍历方式第5部分 LinkedL

【Java集合系列】---ArrayList

开篇前言--ArrayList中的基本方法 前面的博文中,小编主要简单介绍java集合的总体架构,在接下来的博文中,小编将详细介绍里面的各个类,通过demo.对比,来对java集合类进行更加深入的理解和认识,希望可以帮助有有需要的小伙伴们`(*∩_∩*)′,不足之处,还请小伙伴们多多指教哦`(*∩_∩*)′.今天这篇博文,小编主要介绍List接口中的ArrayList集合,ArrayList即数组列表,so,她肯定和数组有一定的关系,我们知道List集合的特征有两个,一个是有序:第二个List里

Java 集合系列07之 Stack详细介绍(源码解析)和使用示例

概要 学完Vector了之后,接下来我们开始学习Stack.Stack很简单,它继承于Vector.学习方式还是和之前一样,先对Stack有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它.内容包括:第1部分 Stack介绍第2部分 Stack源码解析(基于JDK1.6.0_45)第3部分 Vector示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308852.html   第1部分 Stack介绍 Stack简介 Stack是栈.

Java 集合系列01之 总体框架

声明:该分类是转自skywang12345的相关博文.纯粹是学习之用.无商业动机.     Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set集合.Map映射.工具类(Iterator迭代器.Enumeration枚举类.Arrays和Collections)..Java集合工具包框架图(如下): 大致说明: 看上面的框架图,先抓住它的主干,即Coll

【java集合系列】---HashSet

在前面的博文中,小编主要简单介绍了java集合中的总体框架,以及list接口中典型的集合ArrayList和LinkedList,接着,我们来看set的部分集合,set集合和数学意义上的集合没有差别,作为集合,可以容纳多个元素,而且,集合里面没有重复的元素,Set集合是Collection的子集,Set集合与Collection基本相同,没有提供任何额外的方法,只是Set不允许包含重复的元素,今天这篇博文小编主要介绍Set集合中的HashSet,小编会通过简单的demo来介绍set集合的特点,以

深入Java集合系列之五:PriorityQueue

前言 今天继续来分析一下PriorityQueue的源码实现,实际上在Java集合框架中,还有ArrayDeque(一种双端队列),这里就来分析一下PriorityQueue的源码.PriorityQueue也叫优先队列,所谓优先队列指的就是每次从优先队列中取出来的元素要么是最大值(最大堆),要么是最小值(最小堆).我们知道,队列是一种先进先出的数据结构,每次从队头出队(移走一个元素),从队尾插入一个元素(入队),可以类比生活中排队的例子就好理解了. PriorityQueue说明 Priori

Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)

概要 学完了Map的全部内容,我们再回头开开Map的框架图.   本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311126   第1部分 Map概括 (01) Map 是"键值对"映射的抽象接口.(02) AbstractMap 实现了Map中的绝大部

【java集合系列】--- LinkedList

开篇前言--LinkedList中的基本用法 在前面的博文中,小编介绍List接口中的ArrayList集合,List这个接口,有两个实现类,一个就是ArrayList另一个是LinkedList(链表),这两个类都实现了List接口,so.她们有很多相似的地方.LinkedList和ArrayList一样实现了List接口,但是她执行插入和删除操作时比ArrayList更加高效,因为她是基于链表的,但同时也决定了她在随机访问方面要比ArrayList弱一点.我们通过一系列的小demo来加深对L