`
bibithink
  • 浏览: 29748 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java Collections 框架

阅读更多
Collection(下称"对象集") 指一个能够表示一组对象的对象(比如数组)。Java 平台提供了一个 Collections 框架,它是一个统一的架构,用来表示和处理对象集,同时又对每一个具体的对象集做了很多实现上的算法优化。
 
Collections 框架的主要优点有:
  • 降低编程成本:这些数据结构和算法都已经摆在那里,你就不用自己实现了。
  • 提升性能:提供的数据结构和算法实现都是高性能的。每个接口内部都提供了多种可以互相替代的实现,程序可以通过替换实现来进行性能调优。
  • 提供了无关 API 间的内部交互:建立了一个通用的语义,给 API 传入和传出对象集。
  • 更容易学习 API:你不需要学习一些特别的对象集 API。
  • 更容易设计和实现 API:你不需要设计和实现一些特别的对象集 API.
  • 促进软件复用:框架提供了标准的接口和实现,这本身就是很好的软件复用。
 
Collections 框架由以下部分组成:
  • 对象集接口:表示不同的对象集类型,比如集合(set)、列表(list)、映射(map)等,这些接口形成了框架的基础。
  • 通用实现:对象集接口的基本实现。
  • 早期实现:一些像 Vector 和 Hashtable 这样在早期 java 版本中就提供的对象集实现,在当前版本也实现了对应的对象集接口。
  • 特别目的的实现:适用于特定场景的实现,这些实现带来了特别的性能体验,但也包含一些使用限制和特殊的行为表现。
  • 并发实现:为高并发用途而设计的实现。
  • 封装实现:对其他实现添加了额外的功能,比如说同步功能。
  • 传统实现:高性能的对象集“最小实现”。???
  • 抽象实现:为了方便定制实现,实现一部分对象集接口。
  • 算法:一组静态方法,提供用于对象集上的有用操作,比如列表的排序。
  • 数组工具:用于操作原始类型数据或是引用对象数组的工具函数。不严格地说,这也是 Collections 框架的一部分,这个特性是跟 Collections 框架同步发布的,底层也用了一些共同基础逻辑。
 
对象集接口
 
对象集接口主要分为两大类:java.util.Collection 和 java.util.Map
java.util.Collection 的子接口包括:
  • java.util.Set 
      普通集合接口
  • java.util.SortedSet 
      有序集合接口,集合中的元素按照给定的顺序或自然顺序排序,该接口额外提供一些类似获取某个范围内的子集合这样的方法。
  • java.util.NavigableSet 
      导航集合是在有序集合的基础上加上了一些导航访问方法。
  • java.util.Queue 
      是一个先进先出的队列
  • java.util.concurrent.BlockingQueue 
      在普通队列的基础上提供了"延迟满足"功能,具体是指从队列中获取元素时可以一直等待到队列有值,或者是往队列中放元素时可以一直等待直到队列有空间可用。
      BlockingQueue 处理生产者-消费者模式的多线程模型是一把好手。
  • java.util.concurrent.TransferQueue 
      在 BlockingQueue 的基础上增加了对消息递送的保证,比如 transfer 方法有消费者接收到这个消息才返回。
  • java.util.Deque 
      发音是“deck”,是一个双端队列,对队列头尾都可以操作。
  • java.util.concurrent.BlockingDeque
      是在 Deque 的基础上增加了“延迟满足”功能。
 
java.util.Map 的子接口包括:
  • java.util.SortedMap 
      在普通 Map 的基础上提供对 key 的有序存储,可以提供最小的 key,最大的 key,某个范围内的 key 的子 Map 这样的方法。
  • java.util.NavigableMap 
      在 SortedMap 的基础上进一步提供一些导航访问功能。
  • java.util.concurrent.ConcurrentMap 
      是线程安全的 Map
      在 Map 基础上提供了一些像 putIfAbsent 这样的原子方法
  • java.util.concurrent.ConcurrentNavigableMap
      线程安全的 NavigableMap
 
上述接口中有很多方法被标注为可选的(optional),这意味着允许具体的实现类不实现这些方法,被调用到的时候直接抛出一个 UnsupportedOperationException 异常。
 
通用实现
下面这个表格总结了 Collections 框架中的通用实现类。
接口
HashTable
Resiable Array
Balanced Tree
Linked List
Hash Table
+ LinkedList
Set
HashSet
 
TreeSet
 
LinkedHashSet
List
 
ArrayList
 
LinkedList
 
Deque
 
ArrayDeque
 
LinkedList
 
Map
HashMap
 
TreeMap
 
LinkedHashMap
上述的通用实现类都实现了所有的可选操作,对他们装填的元素也没有任何限制。值得注意的是它们都不是线程安全的,另外所有新的实现都有 fail-fast 迭代器,就是在迭代的时候如果检测到容器结构被修改了,就抛出 ConcurrentModificationException 异常。
 
支持并发的对象集
在并发程序中使用对象集需要非常小心,好在 Collections 框架提供了多种对并发访问友好的 API,这些类型比同步的封装类好用多了。
 
支持并发的接口如下:
  • BlockingQueue 
  • TransferQueue 
  • BlockingDeque 
  • ConcurrentMap 
  • ConcurrentNavigableMap
 
对应的实现类如下:
  • LinkedBlockingQueue 
  • ArrayBlockingQueue 
  • PriorityBlockingQueue 
  • DelayQueue 
  • SynchronousQueue 
  • LinkedBlockingDeque 
  • LinkedTransferQueue 
  • CopyOnWriteArrayList 
  • CopyOnWriteArraySet 
  • ConcurrentSkipListSet 
  • ConcurrentHashMap 
  • ConcurrentSkipListMap
 
设计哲学
主要的设计目标是产生一个小而精的对象集 API。
为了做到接口数量足够小,对于像可变性、可修改性这样的不同细节,不是通过多个接口来区分,而是通过接口的可选方法来实现。
为了让接口内部的方法足够少,这些方法必须满足下面的某个条件:
  • 真的是一个基础操作
  • 一些特别高效的实现,覆写了该方法后可以达到显著的性能提升

 
 
 
 
分享到:
评论

相关推荐

    Java Collections.pdf

    Java Collections框架是Java平台的标准库之一,它为开发人员提供了强大的数据结构支持。Java Collections框架设计优雅且功能强大,它不仅简化了开发人员处理集合对象的方式,还提高了程序的可读性和可维护性。本书...

    Java Collections Interview Questions.pdf

    Collection 是 Java Collections 框架中的一个接口,定义了集合的基本操作,例如 add、remove、contains 等。collections 是 Collection 的一个实现类,提供了多种集合类,例如 ArrayList、LinkedList、HashSet 等。...

    Apress的《Java Collections》

    《Java Collections》是Apress出版社出版的一本专著,它深入浅出地讲解了Java Collections框架,这是一套用于管理对象集合的强大的API。这本书针对Java程序员,无论你是初学者还是经验丰富的开发者,都能从中...

    java的Collections教程

    Java的Collections框架是Java编程中不可或缺的一部分,它提供了一组高效、灵活的工具类和接口,用于管理和操作各种数据结构,如列表(List)、集合(Set)、映射(Map)等。这个框架使得开发者能更方便地处理数据,提高了...

    Java Collections 技术研讨会资料+(带源码)

    Java Collections框架是Java编程语言中一个至关重要的部分,它提供了对数据结构的高效管理,包括各种集合类,如List、Set、Queue等,以及映射类Map。在本研讨会资料中,我们将深入探讨这个框架的核心概念、设计模式...

    Java集合框架(JCF:Java Collections Framework)之概述

    Java 集合框架(JCF:Java Collections Framework)之概述 Java 集合框架(JCF:Java Collections Framework)是 Java 语言中的一组类库,用于实现集合操作的统一标准。集合是计算机科学中的一种基本概念,来源于...

    数据结构和Java集合框架《Data Structures and the Java Collections Framework》

    《Data Structures and the Java Collections Framework》这本书可能涵盖了如何有效地使用各种数据结构,如何根据需求选择合适的Java集合框架实现,以及如何通过这些工具解决实际问题。此外,它可能还会讨论并发编程...

    Java Collections集合继承结构_动力节点Java学院整理

    Java Collections框架是Java编程语言中用于管理集合的重要组成部分,它提供了对对象集合的高效操作和组织方式。在Java中,集合主要用于存储一组对象,而数组虽然也能存储对象,但其长度固定,不适合处理动态变化的...

    APress - Java Collections

    《APress - Java Collections》这本书由John Zukowski编写,深入探讨了Java集合框架的各种细节,为读者提供了理解和应用Java集合类的重要知识。本书版权属于作者John Zukowski,并于2001年出版,所有权利受法律保护...

    数据结构与Java面向对象程序设计课程之间的有效衔接.pdf

    通过这种映射关系,可以在教学中将Java Collections框架的讲授与数据结构的知识体系相结合,从而加深学生对数据结构在Java编程中应用的认识。 文章强调,Java Collections框架的设计目的主要是满足高性能、一致性、...

    Java Collections 2001 by John Zukowski

    4. **排序与比较**:Java集合框架提供了多种排序方式,例如`Collections.sort()`方法可以对List进行排序。为了支持自定义排序规则,Java还提供了`Comparator`接口,用户可以通过实现该接口来定义比较逻辑。 5. **...

    java collections

    Java集合框架是Java编程语言中的一个核心组件,它为组织和操作对象提供了高效的数据结构。在Java中,集合框架是一个接口和类的集合,这些接口和类定义了用于存储、管理和处理对象的标准方法。这个框架使得程序员能够...

    Java Collections 作者 APress

    《Java Collections》这本书是关于Java编程语言中集合框架的权威指南。集合框架是Java编程语言的核心组成部分,提供了大量用于存储和操作对象的接口和类。由于集合在Java程序中扮演着至关重要的角色,因此对于任何...

    Eclipse java code snippets

    Java Collections框架是Java语言的核心部分,JavaCollections.xml很可能是关于集合类(如ArrayList、LinkedList、HashSet、HashMap等)的操作代码片段。这些可能包括添加元素、删除元素、遍历集合、集合排序等常见...

    java List 排序 Collections.sort

    在Java编程中,`List`接口是集合框架的重要组成部分,提供了有序的元素存储。...通过阅读和理解`Collections.sort()`的源码,开发者可以进一步提升自己的技能,同时也能更好地理解和运用其他Java集合框架的方法。

    数据结构和Java集合框架

    Java集合框架还包括工具类,如Collections和Arrays,提供了一些静态方法,用于集合的排序、复制、比较等操作。此外,Java 8引入了流(Stream)API,提供了新的处理集合数据的方式,支持并行操作,使得代码更加简洁、...

    Java collections(Java的数据结构)

    本文将基于《Java Collections》这本书中的内容,深入探讨 Java 集合框架中的关键概念和技术细节。 #### 二、Java 集合框架概述 Java 集合框架是由一系列接口和类组成的,它们共同提供了一种灵活且高效的方式来...

Global site tag (gtag.js) - Google Analytics