Java 集合框架(接口)

核心集合接口概述

Java 集合框架的核心接口,主要由两颗树组成:java.util.Collection、java.util.Map
它们层次结构关系,如下图:


Java 集合框架核心接口

Java 官方文档中提到:

The core collection interfaces encapsulate different types of collections. These interfaces allow collections to be manipulated independently of the details of their representation. Core collection interfaces are the foundation of the Java Collections Framework. As you can see in the following figure, the core collection interfaces form a hierarchy.

大致是在说,这些核心集合接口:

  • 封装了不同类型的集合
  • 允许独立于其表示的细节来操纵集合(多态)
  • 是Java集合框架的基础

当然还提到了最重要的一点:

To keep the number of core collection interfaces manageable, the Java platform doesn't provide separate interfaces for each variant of each collection type. (Such variants might include immutable, fixed-size, and append-only.) Instead, the modification operations in each interface are designated optional — a given implementation may elect not to support all operations. If an unsupported operation is invoked, a collection throws an UnsupportedOperationException. Implementations are responsible for documenting which of the optional operations they support. All of the Java platform's general-purpose implementations support all of the optional operations.

这里主要讲的是:
Java 平台为控制核心集合接口的数量,不会为特殊实现(即:变体)提供单独的接口,而是采取另一种方式:每个接口的修改方法都是可选的(optional)。
怎么理解呢,说白了,就是实现类在实现接口的时候,可以选择性的实现这些方法。若调用了没有实现的方法,就会抛出异常:UnsupportedOperationException
(在提一点:在阅读源码的时候,如果你看到 optional operation 这样的文字,就是在说明,该方法是一个可选方法)


核心集合接口描述

Java 官方文档中的描述:

The following list describes the core collection interfaces:

  • Collection — the root of the collection hierarchy. A collection represents a group of objects known as its elements. The Collection interface is the least common denominator that all collections implement and is used to pass collections around and to manipulate them when maximum generality is desired. Some types of collections allow duplicate elements, and others do not. Some are ordered and others are unordered. The Java platform doesn't provide any direct implementations of this interface but provides implementations of more specific subinterfaces, such as Set and List.
  • Set — a collection that cannot contain duplicate elements. This interface models the mathematical set abstraction and is used to represent sets, such as the cards comprising a poker hand, the courses making up a student's schedule, or the processes running on a machine.
  • List — an ordered collection (sometimes called a sequence). Lists can contain duplicate elements. The user of a List generally has precise control over where in the list each element is inserted and can access elements by their integer index (position). If you've used Vector, you're familiar with the general flavor of List.
  • Queue — a collection used to hold multiple elements prior to processing. Besides basic Collection operations, a Queue provides additional insertion, extraction, and inspection operations.
    Queues typically, but do not necessarily, order elements in a FIFO (first-in, first-out) manner. Among the exceptions are priority queues, which order elements according to a supplied comparator or the elements' natural ordering. Whatever the ordering used, the head of the queue is the element that would be removed by a call to remove or poll. In a FIFO queue, all new elements are inserted at the tail of the queue. Other kinds of queues may use different placement rules. Every Queue implementation must specify its ordering properties.
  • Deque — a collection used to hold multiple elements prior to processing. Besides basic Collection operations, a Deque provides additional insertion, extraction, and inspection operations.
    Deques can be used both as FIFO (first-in, first-out) and LIFO (last-in, first-out). In a deque all new elements can be inserted, retrieved and removed at both ends.
  • Map — an object that maps keys to values. A Map cannot contain duplicate keys; each key can map to at most one value. If you've used Hashtable, you're already familiar with the basics of Map.

精简一下,差不多就这个意思:

  • Collection:集合层次结构的根。
  • Set:不能包含重复元素的集合。
  • List:有序集合(有时称为序列)。可以包含重复的元素。
  • Queues:用于在处理之前保存多个元素的集合。除了基本的收集操作之外,队列还提供额外的插入、提取和检查操作。Queues通常(但不一定)以FIFO(先入先出)的方式对元素进行排序。
  • Deque:用于在处理之前保存多个元素的集合。除了基本的收集操作之外,队列还提供额外的插入、提取和检查操作。Deques 可以同时用作FIFO(先入先出)和LIFO(后入先出)。在Deques中,所有新元素都可以在两端插入、检索和删除。
  • Map:将键映射到值的对象。Map 不能包含重复的键;每个键最多可以映射到一个值。

还有两个排序的版本:

The last two core collection interfaces are merely sorted versions of Set and Map:

  • SortedSet — a Set that maintains its elements in ascending order. Several additional operations are provided to take advantage of the ordering. Sorted sets are used for naturally ordered sets, such as word lists and membership rolls.
  • SortedMap — a Map that maintains its mappings in ascending key order. This is the Map analog of SortedSet. Sorted maps are used for naturally ordered collections of key/value pairs, such as dictionaries and telephone directories.

讲的是 SetMap 的排序版本:

  • SortedSet:以升序维护其元素的集合。还提供了一些额外的操作来利用排序。排序集用于自然排序集,例如单词列表和成员列表。
  • SortedMap:以升序键顺序维护映射的映射。这是SortedSet的映射模拟。排序映射用于自然排序的键/值对集合。

更多参考:
Interfaces (The Java™ Tutorials > Collections)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,322评论 0 10
  • 上个月的朋友聚会上,我一个曾经无比放飞自我的闺蜜抱怨初为人母完全没有育儿经验,可以说是跌跌撞撞走到现在,整个人完全...
    NJ安可阅读 613评论 0 1
  • 一天,课余时间和几位年轻教师坐在一起聊天。 “现在的孩子怎么不爱学习呢?” “是啊!现在的孩子看着老师,离开你的眼...
    书写美好的生活阅读 1,364评论 28 42
  • 老公语录1 2018年4月11日,星期四,天气:晴 老公今天对我说:“哟,婷丫子都没有穿秋裤了,说明夏天真滴快来了...
    虢长史阅读 152评论 0 0
  • 敏姐一口气说完,长叹一声,“姐的这些往事,从来就没对别人说过。姐也不怕你笑话,唉,这样的日子,啥时候是个头啊!” ...
    疯一样的绅士阅读 1,287评论 0 0