欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

 分类:Guava

Guava学习之HashBiMap

Guava学习之HashBiMap
  HashBiMap存储的键和值都只能唯一,不存在键与键、值与值相同的情况(详细分析见我博客:Guava学习之BiMap)。HashBiMap类继承了AbstractMap类并实现了BiMap接口,其类继承关系如下图所示:[caption id="attachment_705" align="aligncenter" width="356"] HashBiMap[/caption]  AbstractMap类实现了Map接口定义的一些方法,而BiMap类定义了其子类需要实现的

w397090770   11年前 (2013-09-16) 4396℃ 0评论3喜欢

Guava学习之AbstractMapBasedMultimap

Guava学习之AbstractMapBasedMultimap
  AbstractMapBasedMultimap源码分析:AbstractMapBasedMultimap是Multimap接口的基础实现类,实现了Multimap中的绝大部分方法,其中有许多的方法还是靠实现类的具体实现,比如size()方法,其计算方法在不同实现是不一样的。同时,AbstractMapBasedMultimap类也定义了自己的一些方法,比如createCollection()。AbstractMapBasedMultimap类中主要存在以下两个成员

w397090770   11年前 (2013-09-13) 4038℃ 1喜欢

Guava学习之Iterators

Guava学习之Iterators
  Iterators类提供了返回Iterator类型的对象或者对Iterator类型对象操作的方法。除了特别的说明,Iterators类中所有的方法都在Iterables类中有相应的基于Iterable方法对应。  性能说明:除非特别说明,所有在这个类中的迭代器都是懒惰的,这意味着在觉得必要的时候,需要提前得到迭代功能。Iterators类可以通过emptyIterator()方法得到

w397090770   11年前 (2013-09-11) 3982℃ 3评论0喜欢

Guava学习之Lists

Guava学习之Lists
  Lists类主要提供了对List类的子类构造以及操作的静态方法。在Lists类中支持构造ArrayList、LinkedList以及newCopyOnWriteArrayList对象的方法。其中提供了以下构造ArrayList的函数:下面四个构造一个ArrayList对象,但是不显式的给出申请空间的大小:[code lang="JAVA"]   newArrayList()   newArrayList(E... elements)   newArrayList(Iterable<?

w397090770   11年前 (2013-09-10) 19726℃ 2评论8喜欢

Guava学习之Splitter

Guava学习之Splitter
  Splitter:在Guava官方的解释为:Extracts non-overlapping substrings from an input string, typically by recognizing appearances of a separator sequence. This separator can be specified as a single character, fixed string, regular expression or CharMatcher instance. Or, instead of using a separator at all, a splitter can extract adjacent substrings of a given fixed length. 

w397090770   11年前 (2013-09-09) 7113℃ 1评论0喜欢

Guava学习之Preconditions

Guava学习之Preconditions
  在编写程序的时候,很多时候都需要检查输入的参数是否符合我们的需要,比如人的年龄需要大于0,名字不能为空;如果不符合这两个要求,我们将认为这个对象是不合法的,这时候我们需要编写判断这些参数是否合法的函数,我们可能这样写:[code lang="JAVA"]package com.wyp;import java.util.ArrayList;import java.util.List;/** * Crea

w397090770   11年前 (2013-07-24) 6101℃ 4评论2喜欢

Guava学习之RangeMap

Guava学习之RangeMap
  在《Guava学习之RangeSet》中谈到了RangeSet的特点及其用法。今天要谈的的RangeMap和RangeSet有许多不一样的。   在Google Guava官方API上面可以得知:RangeMap是一种集合类型( collection type),它将不相交、且不为空的Range(key)映射给一个值(Value)。和RangeSet不一样,RangeMap不可以将相邻的区间合并,即使这个区间映射的值是一样的。

w397090770   12年前 (2013-07-18) 6942℃ 0评论5喜欢

Guava学习之RangeSet

Guava学习之RangeSet
  前面谈到了Guava中新引入的Range类,也了解了其中的作用,那么今天来谈谈Guava中用到Range来的地方:RangeSet类。RangeSet类是用来存储一些不为空的也不相交的范围的数据结构。假如需要向RangeSet的对象中加入一个新的范围,那么任何相交的部分都会被合并起来,所有的空范围都会被忽略。   讲了这么多,我们该怎么样利用RangeS

w397090770   12年前 (2013-07-17) 7439℃ 1评论4喜欢

Guava学习之Range

Guava学习之Range
  在Guava中新增了一个新的类型Range,从名字就可以了解到,这个是和区间有关的数据结构。从Google官方文档可以得到定义:Range定义了连续跨度的范围边界,这个连续跨度是一个可以比较的类型(Comparable type)。比如1到100之间的整型数据。不过我们无法遍历出这个区间里面的值。如果需要达到这个目的,我们可以将这个范围传给Conti

w397090770   12年前 (2013-07-15) 5385℃ 0评论4喜欢

Guava学习之Immutable集合

Guava学习之Immutable集合
  Immutable中文意思就是不可变。那为什么需要构建一个不可变的对象?原因有以下几点: 在并发程序中,使用Immutable既保证线程安全性,也大大增强了并发时的效率(跟并发锁方式相比)。尤其当一个对象是值对象时,更应该考虑采用Immutable方式; 被不可信的类库使用时会很安全; 如果一个对象不需要支持修改操作(mutation

w397090770   12年前 (2013-07-12) 8678℃ 1评论8喜欢