Java集合框架基础介绍
Java集合框架
- Java集合框架基础介绍
- 集合框架的组成介绍
- Iterator
- Collection
- List接口
- Set接口
- Queue接口
- Map接口
- HashMap
- LinkedHashMap
- TreeMap
- WeakHashMap
- HashTable
- 工具类
- Collections
- Arrays
Java集合框架基础介绍
我们都学习过基础的数据结构了,比如说数组、链表等。为什么还需要学集合框架呢?
这其中最重要的一点就是集合更加高级和灵活。除此之外集合还提供了一系列的方法供我们使用,比起我们单独使用数组或者链表要方便的多。
集合框架的组成介绍
从上面的图我们可以看出我们集合框架的最上面有三个接口,分别是Iterator、Collection、Map。(虚线空箭头表示:实现关系;实线空箭头表示:继承关系;实现黑箭头表示:依赖关系)
Iterator
由图可以看出来,Iterator接口可以被Collection接口使用,Collection接口又可以被Map接口使用(后面会做解释)。Iterator下有LinkIterator,List接口可以使用。
Iterator我们称为迭代器,我们可以不用去管集合的底层结构,对集合进行遍历的行为。迭代器是一种设计模式。
Collection
Collection接口中的子接口有List接口、Set接口、Queue接口和AbstractCollection接口。这里我们主要讲List接口、Set接口和Queue接口。
Collection接口中,我们主要存储的是相同类型的数据。我们主要从以下三个方面来分析:数据是否可以重复、数据是否有序(包括插入有序和访问有序)、是否可以存储NULL值。
List接口
List接口下常用的集合有ArrayList、LinkedList和Vector。
List接口可以存储重复的元素,存储的数据是有序的(此处为插入有序),并且可以存储NULL值。List接口下的集合,除了Vector以外,都是线程不安全的。
Set接口
set 接口下常用的集合有HashSet、LinkedHashSet、TreeSet。
Set接口下的集合是基于Map集合实现的。因此许多的特点与Map集合是十分相似的。
Set接口下的集合不可以存储重复的数据,存储的数据是无序的,可以仅仅存储一个NULL值。Set接口下的集合都是线程不安全的。
Queue接口
Queue接口下常用的集合有PriorityQueue(优先级队列)、BlockingQueue(阻塞队列)、DeQueue(双向队列)。
Queue接口下的集合可以存储重复的数据,存储的数据是有序(有序是基于数据特征)、不可以存储NULL值。
PriorityQueue是一个队列,但其获取最大值以及最小值时,其实现结构是平衡二叉树。
BlockingQueue也是一个队列,它用在最多的地方是多线程的处理。
Map接口
Map接口中的子接口有AbstractMap和SortedMap。但其实我们只需要讲AbstractMap就可以把Map中的集合说完。Map集合中常用的有:HashMap、LinkedHashMap、TreeMap、WeakHashMap、HashTable。
Map接口下,除了HashTable以外,其余的都是线程不安全的。
Map接口中,我们主要是以键值对(Key-Value)的形式进行数据的存储。Map接口下的集合我们同样用上面的三个方面来探讨。
HashMap
HashMap是AbstractMap抽象类的一个实现类之一。
HashMap不可以存储重复的数据、存储的数据是无序的、Key和value分别可以存储最多一个NULL值。
LinkedHashMap
LinkedHashMap继承自HashMap,实际上是优化了HashMap存储的数据无序的特点,底层是以链表的形式连接起来。
LinkedHashMap不可以存储重复的数据、存储的数据是有序的、Key和value分别可以存储最多一个NULL值。
TreeMap
TreeMap继承自SortedMap和AbstractMap。TreeMap可以通过实现实现比较器来进行自定义排序。
TreeMap不可以存储重复的数据,存储的数据是有序的(仅第一个元素是有序的:最大或最小的),不可以存储NULL值。
WeakHashMap
WeakHashMap是继承自AbstractMap。WeakHashMap同样也是HashMap,但其键值对中的Key是弱键,会在JVM(Java Virtual Machine)进行GC操作时,如果Key没有对象引用整个Entry实体就会被回收。
HashTable
HashTable继承自AbstractMap。
HashTable不可以存储重复的数据,存储的数据是无序的,并且不可以存储NULL值。
HashTable是线程安全的,但现在使用较少。建议学习java.util.concurrent包下的ConcurrentHashMap。详见OSChina在线文档。
工具类
除了以上集合以外,还提供了两个工具类:Collections和Arrays。
Collections
提供了一些方法供我们使用:例如排序、二分查找、复制等。详细见OSChina在线文档中java.util包下的Collections类。
Arrays
Arrays同样也是提供了许多已经写好的方法给我们使用。详细见Collection是链接中java.util包下的Arrays类。详细见OSChina在线文档。
图片集合框架图来源于【diweikang】,其他关于集合的内容,详细查看【Java集合框架】
Java集合框架基础介绍相关推荐
- -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器...
集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别? A:长度区别 ...
- java集合框架介绍_Java集合框架介绍
Java集合框架介绍 发布时间:2020-06-26 17:00:14 来源:亿速云 阅读:85 作者:Leah 这篇文章将为大家详细讲解有关Java集合框架介绍,文章内容质量较高,因此小编分享给大家 ...
- Java集合框架List,Map,Set等全面介绍
Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构. Java集合框架的基本接口/类层次结构: java.util.Colle ...
- Java集合框架之四大接口、常用实现类,java基础面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
- java集合框架介绍(转)
从上面的集合框架图可以看到,Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection接口又有3种子类型 ...
- Java集合框架综述,这篇让你吃透!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:平凡希 cnblogs.com/xiaoxi/p/60899 ...
- java集合框架综述
一.集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下.Java的集合类主要由两个接口派生而出:Collection和Map,Collection和 ...
- 容器(一)剖析面试最常见问题之 Java 集合框架
转载自https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/Java%E9%9B%86%E5%90%88%E ...
- java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...
一个多月前,作者和一些小伙伴决定做一系列的 Java 知识点常见重要问题的小册,方便用来夯实基础!小册的标准就一个,那就是:取精华,取重点.每一本小册,我们都会充分关注我们所总结的知识点是否达到这个标 ...
- 厉害!Java集合框架综述,这篇让你吃透!
作者:平凡希 来源:cnblogs.com/xiaoxi/p/6089984.html 一.集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下.Ja ...
最新文章
- 修改Kali Linux 2020.1主题颜色
- 黄聪:百度知道中对HTML字符实体、字符编号,开头字符的使用
- 这是我见过最简单粗暴的辞职书了
- python切片语法-python切片语法
- 数据结构(严蔚敏)之三——顺序栈之c语言实现
- Linux 退出vi编辑模式
- arm linux 加载.a,如何将libc.a链接到arm-linux中的共享库中使用arm-none-linux-gnueabi-gcc...
- mysql dnslog_dnslog小技巧
- idea 光标变粗 无法输入
- mysql集群负载均衡,这些知识你必须拿下
- 翻译: 图解卡尔曼滤波器的工作原理
- ModuleNotFoundError: No module named 'exceptions'
- 创建React脚手架项目
- chromium os 编译
- miRNA-转录组-蛋白组联合分析
- [渝粤教育] 西南科技大学 英语词汇学 在线考试复习资料
- github pages不能自动更新
- python爬取地表水水质监测数据(爬虫)
- python工具类-selenium 浏览器封装
- leetcode 974 Subarray Sums Divisible by K