这篇文章是续着昨天的《Guava学习之SetMultimap》写的。AbstractSetMultimap是一个抽象类,主要是实现SetMultimap接口中的方法,但是其具体的实现都是调用了AbstractMapBasedMultimap类中的相应实现,只是将AbstractMapBasedMultimap类中返回类行为Collection的修改为Set。下面主要说说AbstractSetMultimap类的相关实现。  1、在AbstractMapBasedMultimap类中就

w397090770   11年前 (2013-09-26) 2858℃ 1评论5喜欢

Guava学习之SetMultimap

Guava学习之SetMultimap
   [caption id="attachment_751" align="aligncenter" width="536"] Guava学习之SetMultimap[/caption]   SetMultimap及其子类的继承图如上所示。   SetMultimap是一个接口,继承自Multimap接口,同昨天说的ListMultimap接口类似,它也定义了所有继实现自SetMultimap的子类定义了一些共有的方法签名。SetMultimap接口并没有定义自己特有的方法签名,里面所

w397090770   11年前 (2013-09-25) 9207℃ 1评论4喜欢

Guava学习之Resources

Guava学习之Resources
  Resources提供提供操作classpath路径下所有资源的方法。除非另有说明,否则类中所有方法的参数都不能为null。虽然有些方法的参数是URL类型的,但是这些方法实现通常不是以HTTP完成的;同时这些资源也非classpath路径下的。  下面两个函数都是根据资源的名称得到其绝对路径,从函数里面可以看出,Resources类中的getResource函数

w397090770   11年前 (2013-09-25) 6491℃ 0评论4喜欢

Guava学习之ArrayListMultimap

Guava学习之ArrayListMultimap
ArrayListMultimap类的继承关系如下图所示:[caption id="attachment_744" align="aligncenter" width="593"] Guava ArrayListMultimap[/caption]  ListMultimap是一个接口,继承自Multimap接口。ListMultimap接口为所有继实现自ListMultimap的子类定义了一些共有的方法签名。ListMultimap接口并没有定义自己特有的方法签名,里面所有的方法都是重写了Multimap接口中的声明

w397090770   11年前 (2013-09-24) 8267℃ 0评论2喜欢

Guava学习之CharSequenceReader

Guava学习之CharSequenceReader
  CharSequenceReader类是以CharSequence的形式读取字符。CharSequenceReader类继承自Reader类,除了remaining()、hasRemaining()以及checkOpen()函数之后,其他的函数都是重写Reader类中的函数。CharSequenceReader类声明没有用public关键字,所以我们暂时还不能调用这个类CharSequenceReader类有下面三个成员变量[code lang="JAVA"] private CharSequence seq; //存放

w397090770   11年前 (2013-09-23) 2862℃ 1评论2喜欢

Java中>>和>>>移位操作符的区别

Java中>>和>>>移位操作符的区别
  大家都知道>是比较两个对象的大小,那>>和>>>的区别呢?  >>和>>>都是移位操作;对正数的移位操作它们的功能都是一样的,如下:[code lang="JAVA"]15 >> 2 = 315 >>> 2 = 3[/code]其实就是将15除于4,得到的商。转换为二进制可能更直观(为了方便,下面的二进制操作我们都是以八位进行的,

w397090770   11年前 (2013-09-22) 32749℃ 2评论17喜欢

比较安全的两整数平均值算法实现

比较安全的两整数平均值算法实现
  求两个整数的平均值这个问题相信大家都想过,大家肯定会很快的写出以下的算法:[code lang="JAVA"]public static int mean(int a, int b){ return (a + b) / 2;}或者public static int mean(int a, int b){ return (a + b) >> 1;}或者public static int mean(int a, int b){ return (a + b) >>> 1;}[/code]  不错,上面的函数是能够求出a和b的平

w397090770   11年前 (2013-09-18) 5547℃ 5评论3喜欢

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) 4363℃ 0评论3喜欢

Guava学习之AbstractMapBasedMultimap

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

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

里氏替换法则

里氏替换法则
  里氏替换法则(Liskov Substitution Principle LSP)是面向对象设计的六大基本原则之一(单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则以及开闭原则)。这里说说里氏替换法则:父类的一个方法返回值是一个类型T,子类相同方法(重载或重写)返回值为S,那么里氏替换法则就要求S必须小于等于T,也就是说要么

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