欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java集合框架概述,java集合框架

来源: javaer 分享于  点击 35704 次 点评:90

Java集合框架概述,java集合框架



前言

Java集合框架概述; 主要总述Java集合框架的设计理念, 组成和基本接口(及其区别等)

Java集合框架系列博客:


正文


一. 设计理念


二. 基本组成

2.1 总述

Java集合框架主要分为三个部分: 接口, 实现和算法

2.1-1 接口

接口指的是以CollectionMap为起始的一系列公用接口

实际上从Map出发的并不是真正的集合, 只是其包含集合视图操作, 所以也将其归入集合框架中

Collection出发的公用接口主要有以下几个, 也是这次会着重讲解和比较的; 当然, 下面的接口并不全面, 在后面会逐渐扩展和补充

Map出发的公用接口如下

当然, 上述列举出来的子接口都是直接继承自Collection或者Map, 对于其子接口的子接口, 这里并没有列出在这里(比如NavigableMap接口是SortedMap接口的子接口, 而不是直接继承Map的, 所以这里并没有直接列出来)

2.1-2 实现

实现指的是接口的实现类, 这里笔者在官网找到一张表, 如下, 很好的列出了平时重点所用的实现类

Interface Hash Table Resizable Array Balanced Tree Linked List Hash Table + Linked List
Set HashSet TreeSet LinkedHashSet
List ArrayList LinkedList
Deque ArrayDeque LinkedList
Map HashMap TreeMap LinkedHashMap

当然, 还应该包含Java 2以前几个旧API, 即: Vector, Stack, Hashtable

2.1-3 算法

(1). 算法

算法指的是以Collections为主的提供的一系列对集合的操作, 参见下图, 列出了其提供的常用算法

下面对上述方法进行一些简单解释

(2). 包装类

当然, 实际上Collections提供的不仅仅是针对集合的算法, 其还提供了一系列对集合的包装类(即Wrapper), 主要包括以下三大类:

这些包装类的作用主要是满足平时一些特殊的需求, 比如同步, 不可修改等


三. 基本接口

在这一节, 主要讲解上面提到的几个基本接口, 这里不会涉及到其实现类

3.1 Collection

Collection是集合框架中一个最顶层的基本接口, 提供了一个数据集的基本描述, 在官方API中并没有提供其直接实现类, 而是在其基础上提供了进一步的限制接口, 即List, Set, Queue; 这样做的好处有:

Collection提供了数据操作的基本方法, 如add(), remove(), size(), clear()等; 同时, 其还继承了Iterable接口, 这个接口是用于使用迭代器遍历集合用的, 使用迭代器遍历集合的优点是我们不必知道集合的内部结果,集合的内部结构、状态由Iterator来维持, 通过统一的方法hasNext(), next()来判断和获取下一个元素

3.2 List

ListCollection上做的限制是, 元素有序(但并不是排序), 允许重复元素; 同时还将迭代器换成了ListIterator; 关于ListIterator, 其允许双向的迭代, 以及元素插入(ListIterator.add()), 删除(ListIterator.remove())和替换ListIterator.set()

JDK9中, 还提供了一个List.of()的静态方法, 用于返回一个不可变List(Immutable List)

3.3 Set

SetCollection上做的限制是, 元素不重复, 至多一个null元素

JDK9中, 还提供了一个Set.of()的静态方法, 用于返回一个不可变的Set

3.4 Queue

QueueCollection上做的限制是, 除了Collection提供的基本操作外, 还提供了一些额外的操作, 分为两类, 一个返回特定值, 另一个抛出异常, 见下表

Throw Exception Return Special Value
Insert add(e)
Remove remove()
Examine element()

3.5 Map

Map本质上是一组键值对, Map允许单独访问key(通过keySet()返回keySet), 也可以单独访问value(通过values()方法返回valueCollection), 也可以通过entrySet()获取key-value的对应关系

四. 参考链接

相关文章

    暂无相关文章
相关栏目:

用户点评