写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭!
用知识改变命运,用知识成就未来!加油 (ง •̀o•́)ง (ง •̀o•́)ง

文章目录

  • 前言
  • 什么是集合框架
  • 数组和集合框架的区别
  • 集合框架的分支
    • Collection接口
    • Map接口

前言

 之前写过关于 C++ STL 的四篇文章,现在开始写一下关于Java集合框架的文章,该系列博客将会写很长时间。不管是C++的STL也好,Java的集合框架也好,这两者其实都是将一些基本的数据结构进行了封装实现,从现在开始博主将带领大家遨游在Java集合框架的源码世界,准备好了吗?Go!!!

什么是集合框架

 在前言中也提到过,其实 Java 的集合框架(也叫容器)就是对一些基本的数据结构进行了封装实现。开发人员希望 Java 的集合框架规模小而且容易学习,不像 C++ STL 那样复杂,又能具有 C++ STL 率先提出的“泛型算法”的优点。

 Java的集合框架不能仅仅满足于功能的实现,还必须具有以下几个优点:

  • 高性能
  • 允许不同类型的集合,以类似的方式进行操作,操作简单
  • 易于适应和扩展

 为了实现如上要求,Java集合框架围绕着一组标准 接口 进行设计,Java集合类库将接口(interface)与实现(implementation)分离。

数组和集合框架的区别

数组和集合框架的主要区别如下:

  1. 数组只能存储相同类型的数据,如 int[] arr=new int[10]; arr 只能保存整数,而集合可以存储不同类型的数据。
  2. 数组可以保存基本数据类型的数据,也可以保存引用数据类型的数据,而集合框架只能保存对象(集合框架里面的数据都是对象)。
  3. 数组的弊端:**Student[] stu=new Student[10];**这个数组只能保存10个学生信息数组的长度一旦定义,是不可改变的,而集合可以存储数量不确定的数据。

集合框架的分支

 集合框架主要有两个基本的接口:CollectionMap。下面分别介绍一下两者。

Collection接口

 该接口实现了单列集合,用来存储一个个对象。即该接口的实现类都是像数组一样存储一个一个的数据,数组中的每个位置值存储一个数据。实现 Collection 接口有三个子接口 List 接口、Set 接口以及 Queue接口。

 实现 List 接口的类有:ArrayList、LinkedList、Vector

 实现 Set 接口的类有 HashSet、TreeSet、EnumSet、LinkedHashSet

 实现 Queue 接口的类有:ArrayDeque、PriorityQueue

 在之后的文章里面会对这些类进行一一详解,这里只列一下名字。

Map接口

Map 接口实现了多列集合,用来存储一对 (key-value) 一对的数据。实现 Map 接口的类有:HashMap、TreeMap、EnumMap、LinkedHashMap、WeakHashMap、IdentityHashMap、Hashtable(已被淘汰)、Properties。在之后的文章里会对这些类一一进行源码详解,这里也只列一下名字。


未完待续,持续更新中……

Java集合框架源码详解系列(一)相关推荐

  1. 【java集合框架源码剖析系列】java源码剖析之ArrayList

    注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本. 本博客将从源码角度带领大家学习关于ArrayList的知识. 一ArrayList类的定义: public class Arr ...

  2. 【Live555】live555源码详解系列笔记

    [Live555]liveMedia下载.配置.编译.安装.基本概念 [Live555]live555源码详解(一):BasicUsageEnvironment.UsageEnvironment [L ...

  3. 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法

    注:关于排序算法,博主写过[数据结构排序算法系列]数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过 ...

  4. Java集合框架源码解析之ArrayList

    ArrayList 可能是很多人使用得最为频繁的容器类了,ArrayList 实现了 List 接口,是一个有序容器,即存放元素的顺序与添加顺序相同,允许添加相同元素,包括 null ,底层通过数组来 ...

  5. Java Thread类源码详解

    概述 Java所有多线程的实现,均通过封装Thread类实现,所以深入Thread类,对深入理解java多线程很有必要 构造函数: Thread的构造函数,采用缺省的方式实现: //传入Runnabl ...

  6. Java集合框架源码剖析:LinkedHashSet 和 LinkedHashMap

    Java LinkedHashMap和HashMap有什么区别和联系?为什么LinkedHashMap会有着更快的迭代速度?LinkedHashSet跟LinkedHashMap有着怎样的内在联系?本 ...

  7. 【Live555】live555源码详解(九):ServerMediaSession、ServerMediaSubsession、live555MediaServer

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: ServerMediaSession.ServerMediaSubsession.Dy ...

  8. 【Live555】live555源码详解(八):testRTSPClient

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的testRTSPClient实现的三个类所在的位置: ourRTSPClient.StreamClient ...

  9. 【Live555】live555源码详解(七):GenericMediaServer、RTSPServer、RTSPClient

    [Live555]live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: GenericMediaServer.RTSPServer.RTSPClient 14 ...

最新文章

  1. C++/C++11中std::priority_queue的使用
  2. 小程序云服务器选什么系统好,小程序云服务器操作系统选择
  3. vue-axios下载文件流blob,ie下载报传递给系统调用的数据区域太小.ie文件流下载报错;文件下载失败将blob的错误信息转换成json格式
  4. Centos命令与Vim命令的学习记录
  5. 循环序列模型 —— 1.3循环神经网络
  6. 小米平板5系列将有三个版本:搭载全新骁龙860芯片
  7. Luogu P5008 逛庭院
  8. Linux 加入域的那些事儿!
  9. RV减速器静力学和动力学仿真分析
  10. WPS2000系列之二样式管理(转)
  11. 基于文本数据的情感分析系统
  12. 计算机硬件系统测试,介绍几个常用的电脑硬件检测工具
  13. Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块
  14. 拿webshell的一些姿势
  15. CodeForces 596B Wilbur and Array 贪心
  16. 《深入理解计算机系统》实验二Bomb Lab下载和官方文档机翻
  17. java实现按比例缩放图片技巧
  18. 推特CEO杰克·多西去年薪酬仅1.4美元 没有任何股票奖励
  19. 005_video_speed_controller
  20. 画论78 王概《芥子园画传》

热门文章

  1. 2020 r7000 龙腾屏幕_不要再吐槽我R7000 2020的龙腾屏了,我给它换上了京东方的4K屏...
  2. 仿抖音-视频及直播点赞效果
  3. nextSibling与nextElementSibling区别
  4. php 模糊查询数据库,php模糊查询_php 简单内容查询代码 利用sql like模糊查询
  5. 每天一个小程序(十一)--- Search Insert Position
  6. java打飞机小游戏(跟着网上视频写到)
  7. Adapter类型控件之Spinner(列表选项框)
  8. matlab java错误,java调用matlab 时出现java.lang.NullPointerException错误
  9. 保护眼睛健康应该吃什么?
  10. [转]踢球装逼要诀!这个就厉害了!