Guava 集合框架

简介:

在本系列中我们首先来学习一些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

目录
相关文章
|
存储 设计模式 缓存
Java源码分析:Guava之不可变集合ImmutableMap的源码分析
Java源码分析:Guava之不可变集合ImmutableMap的源码分析
62 0
|
存储 算法 Java
Java实现—数据结构 1.初识集合框架
Java实现—数据结构 1.初识集合框架
58 0
|
存储 缓存 算法
【Java原理探索】Guava Collections实战使用相关不一般的集合框架
【Java原理探索】Guava Collections实战使用相关不一般的集合框架
89 0
Java集合源码剖析——基于JDK1.8中HashSet、LinkedHashSet的实现原理
Java集合源码剖析——基于JDK1.8中HashSet、LinkedHashSet的实现原理
Java集合源码剖析——基于JDK1.8中HashSet、LinkedHashSet的实现原理
Java集合源码剖析——基于JDK1.8中HashMap的实现原理(下)
Java集合源码剖析——基于JDK1.8中HashMap的实现原理(下)
Java集合源码剖析——基于JDK1.8中HashMap的实现原理(下)
|
存储 算法 Java
Java集合源码剖析——基于JDK1.8中HashMap的实现原理(上)
Java集合源码剖析——基于JDK1.8中HashMap的实现原理(上)
Java集合源码剖析——基于JDK1.8中HashMap的实现原理(上)
【集合框架】JDK1.8源码分析之TreeMap(五)
  当我们需要把插入的元素进行排序的时候,就是时候考虑TreeMap了,从名字上来看,TreeMap肯定是和树是脱不了干系的,它是一个排序了的Map,下面我们来着重分析其源码,理解其底层如何实现排序功能。下面,开始分析。
82 0
【集合框架】JDK1.8源码分析之TreeMap(五)
|
Java API
【集合框架】JDK1.8源码分析之LinkedHashMap(二)
  前面我们已经分析了HashMap的源码,已经知道了HashMap可以用在哪种场合,如果这样一种情形,我们需要按照元素插入的顺序来访问元素,此时,LinkedHashMap就派上用场了,它保存着元素插入的顺序,并且可以按照我们插入的顺序进行访问。
136 0
【集合框架】JDK1.8源码分析之LinkedHashMap(二)
|
存储 安全 Java
【集合框架】JDK1.8源码分析之HashMap(一)
在分析jdk1.8后的HashMap源码时,发现网上好多分析都是基于之前的jdk,而Java8的HashMap对之前做了较大的优化,其中最重要的一个优化就是桶中的元素不再唯一按照链表组合,也可以使用红黑树进行存储,总之,目标只有一个,那就是在安全和功能性完备的情况下让其速度更快,提升性能。好~下面就开始分析源码。
105 0
【集合框架】JDK1.8源码分析之HashMap(一)
|
索引
【集合框架】JDK1.8源码分析之IdentityHashMap(四)
  前面已经分析了HashMap与LinkedHashMap,现在我们来分析不太常用的IdentityHashMap,从它的名字上也可以看出来用于表示唯一的HashMap,仔细分析了其源码,发现其数据结构与HashMap使用的数据结构完全不同,因为在继承关系上面,他们两没有任何关系。下面,进入我们的分析阶段。
66 0
【集合框架】JDK1.8源码分析之IdentityHashMap(四)