细细品味-Google Guava
sungang1120
这个作者很懒,什么都没留下…
展开
-
Google Guava 库用法整理
参考: http://codemunchies.com/2009/10/beautiful-code-with-google-collections-guava-and-static-imports-part-1/ (2,3,4) http://blog.publicobject.com 更多用法参考http://ajoo.iteye.com/category/119082 以前这么用: ...原创 2014-02-19 15:15:21 · 106 阅读 · 0 评论 -
Guava Collections API学习之AbstractMapBasedMultimap
AbstractMapBasedMultimap源码分析:AbstractMapBasedMultimap是Multimap接口的基础实现类,实现了Multimap中的绝大部分方法,其中有许多的方法还是靠实现类的具体实现,比如size()方法,其计算方法在不同实现是不一样的。同时,AbstractMapBasedMultimap类也定义了自己的一些方法,比如createCol...原创 2014-02-25 14:25:22 · 152 阅读 · 0 评论 -
Guava Collections API学习之HashBiMap
HashBiMap存储的键和值都只能唯一,不存在键与键、值与值相同的情况(Guaval Collections API学习之BiMap)。HashBiMap类继承了AbstractMap类并实现了BiMap接口,其类继承关系如下图所示: AbstractMap类实现了Map接口定义的一些方法,而BiMap类定义了其子类需要实现的一些方法,使得所有...原创 2014-02-25 14:25:37 · 120 阅读 · 0 评论 -
Guava Collections API学习之Bimap
在前面的《Guaval Collections API学习之Multimap》文章中我们谈到了Guava类库中的Multimap,其特点是存在在Multimap中的键值对可以不唯一;而我们又知道,在Java集合类库中有个Map,它的特点是存放的键(Key)是唯一的,而值(Value)可以不唯一,如果我们需要键(Key)和值(Value)都唯一,该怎么实现?这就是今天...原创 2014-02-26 09:29:59 · 90 阅读 · 0 评论 -
Guava Collections API学习之Multisets
今天谈谈Guava类库中的Multisets数据结构,虽然它不怎么经常用,但是还是有必要对它进行探讨。我们知道Java类库中的Set不能存放相同的元素,且里面的元素是无顺序的;而List是能存放相同的元素,而且是有顺序的。而今天要谈的Multisets是能存放相同的元素,但是元素之间的顺序是无序的。从这里也可以看出,Multisets肯定不是实现Java中Set接口的,因为...原创 2014-02-26 09:30:25 · 90 阅读 · 0 评论 -
Guava API学习之Resources
Resources提供提供操作classpath路径下所有资源的方法。除非另有说明,否则类中所有方法的参数都不能为null。虽然有些方法的参数是URL类型的,但是这些方法实现通常不是以HTTP完成的;同时这些资源也非classpath路径下的。 下面两个函数都是根据资源的名称得到其绝对路径,从函数里面可以看出,Resources类 中的getResource函数都是基于...原创 2014-03-03 13:10:12 · 266 阅读 · 0 评论 -
Guava API学习之CharSequenceReader
CharSequenceReader类是以CharSequence的形式读取字符。CharSequenceReader类继承自Reader类,除了remaining()、hasRemaining()以及checkOpen()函数之后,其他的函数都是重写Reader类中的函数。 注:CharSequenceReader类声明没有用public关键字,所以我们暂时还...原创 2014-03-03 13:10:37 · 149 阅读 · 0 评论 -
Guava API学习之Range
在Guava中新增了一个新的类型Range,从名字就可以了解到,这个是和区间有关的数据结构。从Google官方文档可以得到定义:Range定义了连续跨度的范围边界,这个连续跨度是一个可以比较的类型(Comparable type)。比 如1到100之间的整型数据。不过我们无法遍历出这个区间里面的值。如果需要达到这个目的,我们可以将这个范围传给 ContiguousSet.cr...原创 2014-03-03 13:10:53 · 169 阅读 · 0 评论 -
Guava API学习之RangeSet
前面谈到了Guava中新引入的Range类,也了解了其中的作用,那么今天来谈谈Guava中用到Range来的地方:RangeSet类。RangeSet类是用来存储一些不为空的也不相交的范围的数据结构。假如需要向RangeSet的对象中加入一个新的范围,那么任何相交的部分都会被合并起来,所有的空范围都会被忽略。 讲了这么多,我们该怎么样利用RangeSet?RangeSe...原创 2014-03-03 13:11:10 · 172 阅读 · 0 评论 -
Guava Collections API学习之ArrayListMultimap
ArrayListMultimap类的继承关系如下图所示: ListMultimap是一个接口,继承自Multimap接口。ListMultimap接口为所有继实现自ListMultimap的子类定义了一些共有的方法签名。ListMultimap接口并没有定义自己特有的方法签名,里面所有的方法都是重写了Multimap接口中的声明,只是将Multimap接口中返回Co...原创 2014-02-25 14:25:02 · 201 阅读 · 0 评论 -
Guava Collections API学习之Lists
Lists类主要提供了对List类的子类构造以及操作的静态方法。在Lists类中支持构造ArrayList、LinkedList以及newCopyOnWriteArrayList对象的方法。其中提供了以下构造ArrayList的函数:下面四个构造一个ArrayList对象,但是不显式的给出申请空间的大小: newArrayList()newArrayList(E...原创 2014-02-25 14:24:26 · 209 阅读 · 0 评论 -
Guava Collections API学习之Iterators
Iterators类提供了返回Iterator类型的对象或者对Iterator类型对象操作的方法。除了特别的说明,Iterators类中所有的方法都在Iterables类中有相应的基于Iterable方法对应。 性能说明:除非特别说明,所有在这个类中的迭代器都是懒惰的,这意味着在觉得必要的时候,需要提前得到迭代功能。Iterators类可以通过emptyIterator()...原创 2014-02-25 14:24:10 · 123 阅读 · 0 评论 -
google的guava工具类splitter和apache stringutil对比
一直用的是apache的stringutil工具类,其实google的工具类项目 guava中居然也有字符串的分隔类splitter的,在 http://code.google.com/p/guava-libraries/中可以下载,其中在老外的 http://www.javacodegeeks.com/2012/12/guava-splitter-vs-stringu...原创 2014-02-20 14:05:18 · 157 阅读 · 0 评论 -
关注google的guava工具包Map集合
google的guava工具包的确很多好东西,包括之前的字符串处理工具类的,还有大量的collection相关的,项目地址在:http://code.google.com/p/guava-libraries/ 留意到其中的collection相关类中的map,简单介绍如下,更多的请大家补充挖掘或者 看原来的文档: guava提供的是多值map!,就是说,一个key,可以对应多个v...原创 2014-02-20 14:26:36 · 1320 阅读 · 0 评论 -
guava 15新特性介绍
原文:http://www.javacodegeeks.com/2013/10/guava-15-new-features.html Guava 是众所周知的google出品的开源工具包,十分好用,本月退出了version 15的版本,其中主要的几个新特性有: 1 Escapers字符转义器:HtmlEscapersXmlEscapersUrlEscapers ...原创 2014-02-20 14:47:00 · 193 阅读 · 0 评论 -
google guava的splitter用法
google的guava库是个很不错的工具库,这次来学习其spliiter的用法,它是一个专门用来 分隔字符串的工具类,其中有四种用法,分别来小结 1 基本用法: String str = "a,,b, c,,,d"; Iterable<String> iterable = Splitter.on(',').split(str);System....原创 2014-02-20 14:59:09 · 202 阅读 · 0 评论 -
Guava API学习之Optional 判断对象是否为null
java.lang.NullPointerException,只要敢自称Java程序员,那对这个异常就再熟悉不过了。为了防止抛出这个异常,我们经常会写出这样的代码:Person person = people.find("John Smith");if (person != null) { person.doSomething();} 在Java世界里,解决空引...原创 2014-02-20 15:33:48 · 922 阅读 · 0 评论 -
Guava API学习之Ordering犀利的比较器
Ordering是Guava类库提供的一个犀利强大的比较器工具,Guava的Ordering和JDK Comparator相比功能更强。它非常容易扩展,可以轻松构造复杂的comparator,然后用在容器的比较、排序等操作中。 本质上来说,Ordering 实例无非就是一个特殊的Comparator 实例。Ordering只是需要依赖于一个比较器(例如,Collec...原创 2014-02-24 09:35:35 · 120 阅读 · 0 评论 -
Guava API学习之Preconditions优雅的检验参数
在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做 事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需 要自己来逐个写方法判断,代码量不少并且复用性不高,如下所示: public ...原创 2014-02-24 09:35:47 · 157 阅读 · 0 评论 -
Guava Collections API学习之Multimap
相信大家对Java中的Map类及其之类有大致的了解,Map类是以键值对的形式来存储元素(Key->Value),但是熟悉Map的人都知道,Map中存储的Key是唯一的。什么意思呢?就是假如我们有两个key相同,但value不同的元素需要插入到map中去,那么先前的key对应的value将会被后来的值替换掉。如果我们需要用Map来把相同key的值存在一起,代码看起来像下面...原创 2014-02-24 09:36:13 · 115 阅读 · 0 评论 -
Guaval API学习之RangeMap
在前面中谈到了RangeSet的特点及其用法。今天要谈的的RangeMap和RangeSet有许多不一样的。 在Google Guava官方API上面可以得知:RangeMap是一种集合类型( collection type),它将不相交、且不为空的Range(key)映射给一个值(Value)。和RangeSet不一样,RangeMap不可以将相邻的区间合并,即使这个区间映射的值是...原创 2014-03-03 13:11:25 · 199 阅读 · 0 评论