
Guava学习入门
文章平均质量分 88
Guava中文是石榴的意思,是 Google开发的基于java1.6的类库集合的扩展项目. 这些高质量的 API 可以使你的Java代码更加优雅,更加简洁。更多关于Guava的知识请参见:http://iteblog.com/archives/category/guava
过往记忆
这个作者很懒,什么都没留下…
展开
-
Guava学习之ArrayListMultimap
ArrayListMultimap类的继承关系如下图所示:Guava ArrayListMultimap ListMultimap是一个接口,继承自Multimap接口。ListMultimap接口为所有继实现自ListMultimap的子类定义了一些共有的方法签名。ListMultimap接口并没有定义自己特有的方法签名,里面所有的方法都是重写了Multimap接口中的声明,只是将Multim原创 2013-09-26 17:37:44 · 14942 阅读 · 0 评论 -
Guava学习之CharSequenceReader
CharSequenceReader类是以CharSequence的形式读取字符。CharSequenceReader类继承自Reader类,除了remaining()、hasRemaining()以及checkOpen()函数之后,其他的函数都是重写Reader类中的函数。CharSequenceReader类声明没有用public关键字,所以我们暂时还不能调用这个类CharSequenceRe原创 2013-09-24 16:59:55 · 2332 阅读 · 0 评论 -
Guava学习之HashBiMap
HashBiMap存储的键和值都只能唯一,不存在键与键、值与值相同的情况(详细分析见我博客:Guava学习之BiMap)。HashBiMap类继承了AbstractMap类并实现了BiMap接口,其类继承关系如下图所示:HashBiMap AbstractMap类实现了Map接口定义的一些方法,而BiMap类定义了其子类需要实现的一些方法,使得所有实现BiMap的类必须符合其独有的特性:键、值都原创 2013-09-17 13:08:03 · 7381 阅读 · 1 评论 -
Guava学习之AbstractMapBasedMultimap
AbstractMapBasedMultimap源码分析:AbstractMapBasedMultimap是Multimap接口的基础实现类,实现了Multimap中的绝大部分方法,其中有许多的方法还是靠实现类的具体实现,比如size()方法,其计算方法在不同实现是不一样的。同时,AbstractMapBasedMultimap类也定义了自己的一些方法,比如createCollection()。A原创 2013-09-14 00:21:31 · 2499 阅读 · 0 评论 -
Guava学习之Iterators
Iterators类提供了返回Iterator类型的对象或者对Iterator类型对象操作的方法。除了特别的说明,Iterators类中所有的方法都在Iterables类中有相应的基于Iterable方法对应。 性能说明:除非特别说明,所有在这个类中的迭代器都是懒惰的,这意味着在觉得必要的时候,需要提前得到迭代功能。Iterators类可以通过emptyIterator()方法得到一个空的并且不原创 2013-09-11 23:52:43 · 4492 阅读 · 1 评论 -
Guava学习之Lists
Lists类主要提供了对List类的子类构造以及操作的静态方法。在Lists类中支持构造ArrayList、LinkedList以及newCopyOnWriteArrayList对象的方法。其中提供了以下构造ArrayList的函数:下面四个构造一个ArrayList对象,但是不显式的给出申请空间的大小: newArrayList() newArrayList(E... elements原创 2013-09-10 22:45:41 · 16706 阅读 · 1 评论 -
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, fix原创 2013-09-09 23:07:47 · 16415 阅读 · 0 评论 -
Guava学习之Preconditions
在编写程序的时候,很多时候都需要检查输入的参数是否符合我们的需要,比如人的年龄需要大于0,名字不能为空;如果不符合这两个要求,我们将认为这个对象是不合法的,这时候我们需要编写判断这些参数是否合法的函数,我们可能这样写:package com.wyp;import java.util.ArrayList;import java.util.List;/** * Created with I原创 2013-07-25 10:17:51 · 6249 阅读 · 0 评论 -
Guava学习之RangeMap
在《Guava学习之RangeSet》中谈到了RangeSet的特点及其用法。今天要谈的的RangeMap和RangeSet有许多不一样的。 在Google Guava官方API上面可以得知:RangeMap是一种集合类型( collection type),它将不相交、且不为空的Range(key)映射给一个值(Value)。和RangeSet不一样,RangeMap不可以将相邻的区间合并,即原创 2013-07-19 09:38:49 · 8160 阅读 · 1 评论 -
Guava学习之RangeSet
前面谈到了Guava中新引入的Range类,也了解了其中的作用,那么今天来谈谈Guava中用到Range来的地方:RangeSet类。RangeSet类是用来存储一些不为空的也不相交的范围的数据结构。假如需要向RangeSet的对象中加入一个新的范围,那么任何相交的部分都会被合并起来,所有的空范围都会被忽略。 讲了这么多,我们该怎么样利用RangeSet?RangeSet类是一个接口,需要用它的原创 2013-07-18 10:10:31 · 4988 阅读 · 0 评论 -
Guava学习之Range
在Guava中新增了一个新的类型Range,从名字就可以了解到,这个是和区间有关的数据结构。从Google官方文档可以得到定义:Range定义了连续跨度的范围边界,这个连续跨度是一个可以比较的类型(Comparable type)。比如1到100之间的整型数据。不过我们无法遍历出这个区间里面的值。如果需要达到这个目的,我们可以将这个范围传给ContiguousSet.create(com.goog原创 2013-07-16 21:14:15 · 3241 阅读 · 0 评论 -
Guava学习之Immutable集合
Immutable中文意思就是不可变。那为什么需要构建一个不可变的对象?原因有以下几点:在并发程序中,使用Immutable既保证线程安全性,也大大增强了并发时的效率(跟并发锁方式相比)。尤其当一个对象是值对象时,更应该考虑采用Immutable方式;被不可信的类库使用时会很安全;如果一个对象不需要支持修改操作(mutation),将会节省空间和时间的开销;经过分析,所有不可变的集合实现都比可变集原创 2013-07-12 16:00:52 · 7721 阅读 · 0 评论 -
Guava学习之Multisets
今天谈谈Guava类库中的Multisets数据结构,虽然它不怎么经常用,但是还是有必要对它进行探讨。我们知道Java类库中的Set不能存放相同的元素,且里面的元素是无顺序的;而List是能存放相同的元素,而且是有顺序的。而今天要谈的Multisets是能存放相同的元素,但是元素之间的顺序是无序的。从这里也可以看出,Multisets肯定不是实现Java中Set接口的,因为Set接口是不能存放相同原创 2013-07-12 09:41:01 · 5701 阅读 · 0 评论 -
Guava学习之BiMap
在前面的《Guava学习之Multimap》文章中我们谈到了Guava类库中的Multimap,其特点是存在在Multimap中的键值对可以不唯一;而我们又知道,在Java集合类库中有个Map,它的特点是存放的键(Key)是唯一的,而值(Value)可以不唯一,如果我们需要键(Key)和值(Value)都唯一,该怎么实现?这就是今天要谈的BiMap结构。 在过去,如果需要将Map结构中的键值对反原创 2013-07-10 16:15:21 · 7044 阅读 · 0 评论 -
Guava学习之Multimap
相信大家对Java中的Map类及其之类有大致的了解,Map类是以键值对的形式来存储元素(Key->Value),但是熟悉Map的人都知道,Map中存储的Key是唯一的。什么意思呢?就是假如我们有两个key相同,但value的元素需要插入到map中去,那么先前的key对应的value将会被后来的值替换掉。如果我们需要用Map来把相同key的值存在一起,代码看起来像下面一样:/** * */p原创 2013-07-09 20:17:52 · 3772 阅读 · 0 评论