zoukankan      html  css  js  c++  java
  • guava -- 新集合类型

    Guava引入了很多JDK没有的、但有用的新集合类型。这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念。

    作为一般规则,Guava集合非常精准地遵循了JDK接口契约。

    1. Multiset

    统计一个词在文档中出现了多少次,传统的做法是这样的:

    Multiset和Set的区别就是可以保存多个相同的对象。在JDK中,List和Set有一个基本的区别,就是List可以包含多个相同对象,且是有顺序的,而Set不能有重复,且不保证顺序(有些实现有顺序,例如LinkedHashSet和SortedSet等)所以Multiset占据了List和Set之间的一个灰色地带:允许重复,但是不保证顺序。

    使用Multiset,直接上代码:

    2. Multimap

    每个有经验的Java程序员都在某处实现过Map<K, List<V>>或Map<K, Set<V>>。

    Guava的Multimap可以很容易地把一个键映射到多个值。

    3. BiMap

     传统上,实现键值对的双向映射需要维护两个单独的map,并保持它们间的同步。但这种方式很容易出错,而且对于值已经在map中的情况,会变得非常混乱。

    BiMap<K, V>是特殊的Map:

    • 可以用 inverse()反转BiMap<K, V>的键值映射
    • 保证值是唯一的,因此values()返回Set而不是普通的Collection

    在BiMap中,如果你想把键映射到已经存在的值,会抛出IllegalArgumentException异常。如果对特定值,你想要强制替换它的键,请使用BiMap.forcePut(key, value)。

    4. Table

    通常来说,当你想使用多个键做索引的时候,你可能会用类似Map<FirstName, Map<LastName, Person>>的实现,这种方式很丑陋,使用上也不友好。

    Guava为此提供了新集合类型Table,它有两个支持所有类型的键:”行”和”列”。

  • 相关阅读:
    eclipse中的任务标记(TODO、FIXME、XXX)
    编码规范参考
    MVC,MVP 和 MVVM
    Android的两种事件处理机制
    在Eclipse中自定义类似syso的快捷代码模板
    Android
    eclipse使用tips-Toggle Mark Occurrences 颜色更改
    从 Eclipse 迁移至 Android Studio
    Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
    [POJ 2976]Dropping tests(0-1分数规划)
  • 原文地址:https://www.cnblogs.com/lujiango/p/10283019.html
Copyright © 2011-2022 走看看