Java集合框架源码详解系列
Posted AC-fun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java集合框架源码详解系列相关的知识,希望对你有一定的参考价值。
写在前面:大家好!我是
AC-fun
,我的昵称来自两个单词Accepted
和fun
。我是一个热爱ACM的蒟蒻。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭!
用知识改变命运,用知识成就未来!加油 (ง •̀o•́)ง (ง •̀o•́)ง
前言
之前写过关于 C++ STL 的四篇文章,现在开始写一下关于Java集合框架的文章,该系列博客将会写很长时间。不管是C++的STL也好,Java的集合框架也好,这两者其实都是将一些基本的数据结构进行了封装实现,从现在开始博主将带领大家遨游在Java集合框架的源码世界,准备好了吗?Go!!!
什么是集合框架
在前言中也提到过,其实 Java 的集合框架(也叫容器)就是对一些基本的数据结构进行了封装实现。开发人员希望 Java 的集合框架规模小而且容易学习,不像 C++ STL 那样复杂,又能具有 C++ STL 率先提出的“泛型算法”的优点。
Java的集合框架不能仅仅满足于功能的实现,还必须具有以下几个优点:
- 高性能
- 允许不同类型的集合,以类似的方式进行操作,操作简单
- 易于适应和扩展
为了实现如上要求,Java集合框架围绕着一组标准 接口
进行设计,Java集合类库将接口(interface)与实现(implementation)分离。
数组和集合框架的区别
数组和集合框架的主要区别如下:
- 数组只能存储相同类型的数据,如 int[] arr=new int[10]; arr 只能保存整数,而集合可以存储不同类型的数据。
- 数组可以保存基本数据类型的数据,也可以保存引用数据类型的数据,而集合框架只能保存对象(集合框架里面的数据都是对象)。
- 数组的弊端:**Student[] stu=new Student[10];**这个数组只能保存10个学生信息数组的长度一旦定义,是不可改变的,而集合可以存储数量不确定的数据。
集合框架的分支
集合框架主要有两个基本的接口:Collection 和 Map。下面分别介绍一下两者。
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集合框架源码详解系列的主要内容,如果未能解决你的问题,请参考以下文章