在本系列中我们首先来学习一些Guava的集合框架,也就是这个package:com.google.common.collect

在这个包下面有一些通用的集合接口和一些相关的类。

 

集合类型:

BiMap

   它是java.util.Map接口的一个扩展,它的特性就是它的key和value都是唯一的并且是一一对应的。也就是说“可逆”。简单的描述就是根据key能拿到唯一的value,根据value也能够拿到唯一的key。

Multiset

    它是Collection的扩展,就如同List一样能够容纳重复的值。它的典型应用就是“直方图”。
 

Multimap

 
    Multimap是一个新类型,有点类似java.util.Map,但是可能对于相同的key含有多个entries。

ListMultimap

    ListMultimap是Multimap的一个扩展,也能够容纳相同的entries,同时支持随机访问一个特定key的值。

SetMultimap

    SetMultimap是Multimap的一个扩展,不容许容纳相同的entries,也就是说如果有相同的key出现在SetMultimap中,那么这些key对应的值一定是不相同的。

SortedSetMultimap

    SortedSetMultimap是SetMultimap的一个扩展,对于一个给定的key对应的value是一个SortedSet。

Table

    Table是一个新的类型,有点象java.util.Map,但是它是根据行key和列key的坐标来索引value的。

ClassToInstanceMap

    An extension of Map that associates a raw type with an instance of that type.

 

集合的实现

 

List

    ImmutableList

Set

    ImmutableSet
    ImmutableSortedSet
    ContiguousSet (see Range)

Map

    ImmutableMap
    ImmutableSortedMap
    MapMaker

BiMap

    ImmutableBiMap
    HashBiMap
    EnumBiMap
    EnumHashBiMap

Multiset

    ImmutableMultiset
    HashMultiset
    LinkedHashMultiset
    TreeMultiset
    EnumMultiset
    ConcurrentHashMultiset

Multimap

    ImmutableMultimap
    ImmutableListMultimap
    ImmutableSetMultimap
    ArrayListMultimap
    HashMultimap
    TreeMultimap
    LinkedHashMultimap
    LinkedListMultimap

Table

    ImmutableTable
    ArrayTable
    HashBasedTable
    TreeBasedTable

 

ClassToInstanceMap

    ImmutableClassToInstanceMap
    MutableClassToInstanceMap

 

Classes of static utility methods

    Collections2
    Iterators
    Iterables
    Lists
    Maps
    Queues
    Sets
    Multisets
    Multimaps
    Tables
    ObjectArrays

 

Comparison

    Ordering
    ComparisonChain

 

Abstract implementations

    AbstractIterator
    AbstractSequentialIterator
    ImmutableCollection
    UnmodifiableIterator
    UnmodifiableListIterator

Ranges

    Range
    RangeMap
    DiscreteDomain
    ContiguousSet

Other

    Interner, Interners
    Constraint, Constraints
    MapConstraint, MapConstraints
    MapDifference, SortedMapDifference
    MinMaxPriorityQueue
    PeekingIterator
   

Forwarding collections

    ForwardingCollection
    ForwardingConcurrentMap
    ForwardingIterator
    ForwardingList
    ForwardingListIterator
    ForwardingListMultimap
    ForwardingMap
    ForwardingMapEntry
    ForwardingMultimap
    ForwardingMultiset
    ForwardingNavigableMap
    ForwardingNavigableSet
    ForwardingObject
    ForwardingQueue
    ForwardingSet
    ForwardingSetMultimap
    ForwardingSortedMap
    ForwardingSortedMultiset
    ForwardingSortedSet
    ForwardingSortedSetMultimap
    ForwardingTable

Guava 集合框架的更多相关文章

  1. 集合框架学习之Guava Collection

    开源工具包: Guava : Google Collection Apache:Commons Collecton 1.1 Google Collections Guava:google的工程师利用传 ...

  2. java2集合框架的一些个人分析和理解

    Java2中的集合框架是广为人知的,本文打算从几个方面来说说自己对这个框架的理解. 下图是java.util.Collection的类图(基本完整,有些接口如集合类均实现的Cloneable.Seri ...

  3. Java基础19:Java集合框架梳理

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  4. Guava集合--新集合类型

    Guava引入了很多JDK没有的.但我们发现明显有用的新集合类型.这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念.作为一般规则,Guava集合非常精准地遵循了JDK接口契约 ...

  5. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  6. 【目录】JUC集合框架目录

    JUC集合框架的目录整理如下: 1. [JUC]JUC集合框架综述 2. [JUC]JDK1.8源码分析之ConcurrentHashMap(一) 3. [JUC]JDK1.8源码分析之Concurr ...

  7. java面试题——集合框架

    先来看一下集合框架关系图 Collection FrameWork 如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └S ...

  8. Java使用实现面向对象编程:第七章集合框架的解读=>重中之重

    对于集合框架,是非常重要的知识,是程序员必须要知道的知识点. 但是我们为什么要引入集合框架呢? 我们之前用过数组存储数据,但是采用数组存储存在了很多的缺陷.而现在我们引用了集合框架,可以完全弥补了数组 ...

  9. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

随机推荐

  1. Linux文件结构及基本文件夹

    虽然Linux系统有很多种类,但是对于文件系统分区这块,基本上各个版本的Linux系统都是一样的.Linux文件系统分区不像Windows那样将硬盘分为C.D.E.F盘这样,Linux的文件结构是单个 ...

  2. 绝对干货:供个人开发者赚钱免费使用的一些好的API接口

    不久前,我写了一篇文章,名为<科普技术贴:个人开发者的那些赚钱方式>,讲了一些个人开发者接私活和自己做软件加广告的一些科普知识.可是做软件,需要服务器,需要后台,对于一些小的开发者,想赚点 ...

  3. Servicestack IRequestLogger获取 IHttpRequest

    我在 ServiceStack里实现了 Logging 中的请求与返回,同时我想在IRequestLogger.Log() 方法中获取 IHttpRequest . IRequestContext 并 ...

  4. Linux配置无线网卡驱动实现无线上网

    本机装Linux,需要配置的无线驱动.一般Ubuntu都集成无线驱动,基本上无线可以直接使用! 01.查看无线网卡的型号 [root@Mr-zhao software]# lspci    | gre ...

  5. CSS中margin与padding的区别

    CSS边距属性定义元素周围的空间.通过使用单独的属性,可以对上.右.下.左的外边距进行设置.也可以使用简写的外边距属性同时改变所有的外边距.——W3School 边界(margin):元素周围生成额外 ...

  6. struts2上传的问题

    5. 在这里我加一个struts2的一个上传验证的问题 上传时我们可以这样来验证 //判断上传的文件是否合要求 public boolean filterType(String []types){ / ...

  7. Android性能优化文章转载

    今天看到几篇比较好的文章就转了!(链接如下) 转载注明出处:Sunzxyong Android性能优化之Bitmap的内存优化 Android性能优化之常见的内存泄漏 Android最佳实践之Syst ...

  8. (02)javascript属性

    私有属性(私有变量和私有方法) 实例属性(实例变量和实例方法) 静态属性(静态变量和静态方法) <!DOCTYPE html> <html lang="en"&g ...

  9. Windows配置mycat

    MyCat使用Mysql的通讯协议模拟成一个MySQl服务器,并建立了完整的Schema(数据库).Table(数据表).User(用户)的逻辑模型,并将这套逻辑模型映射到后端的存储节点DataNod ...

  10. JPA Hibernate应用实例

    1.配置文件:persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persiste ...