Java集合框架基础介绍

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集合框架

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值