1.Multiset
在Collection的基础上,拓展了对重复元素的处理方法。
public interface Multiset extends Collection
int count(@Nullable Object var1);
int add(@Nullable E var1, int var2);
int remove(@Nullable Object var1, int var2);
int setCount(E var1, int var2);
boolean setCount(E var1, int var2, int var3);
Set
Set
boolean equals(@Nullable Object var1);
int hashCode();
String toString();
Iterator
boolean contains(@Nullable Object var1);
boolean containsAll(Collection> var1);
boolean add(E var1);
boolean remove(@Nullable Object var1);
boolean removeAll(Collection> var1);
boolean retainAll(Collection> var1);
public interface Entry
E getElement();
int getCount();
boolean equals(Object var1);
int hashCode();
String toString();
}
}
2.Multimap
内部实现了Map
特点:不会有任何键映射到空集合:一个键要么至少到一个值,要么根本就不在Multimap中。
public interface Multimap
int size();
boolean isEmpty();
boolean containsKey(@Nullable Object var1);
boolean containsValue(@Nullable Object var1);
boolean containsEntry(@Nullable Object var1, @Nullable Object var2);
boolean put(@Nullable K var1, @Nullable V var2); //添加单个键值对
boolean remove(@Nullable Object var1, @Nullable Object var2); //移除键到值的映射,如果有这样的键值就移除并返回true
boolean putAll(@Nullable K var1, Iterable var2); //依次添加键到多个值映射
boolean putAll(Multimap
Collection
Collection
void clear();
Collection
Set
Multiset
Collection
Collection
Map
boolean equals(@Nullable Object var1);
int hashCode();
}
3.BiMap
双向map,能通过Key与values之间可以互相查找
BiMap接口的实现
public interface BiMap extends Map
V put(K key, V value); //存放键值,存放的值已经存在在另一个Key中时会抛出 IllegalArgumentException异常
V forcePut( K key, V value); //强制放入,会把之前存在的键值删除重新放入。
void putAll(Map
Set values(); //返回值的Set
BiMap inverse(); //反响查找,即通过调用反向查找,可以通过.get方法获得对应的key
}
常用实现
HashBiMap: key 集合与 value 集合都有 HashMap 实现
EnumBiMap: key 与 value 都必须是 enum 类型
ImmutableBiMap: 不可修改的 BiMap
4.Table
Table是Guava提供的一个接口 Interface Table
实际上实现为,Map> 这样的形式
public interface Table
boolean contains(@Nullable Object var1, @Nullable Object var2); //类内部实现为 调用containsRow和containsColumn
boolean containsRow(@Nullable Object var1);
boolean containsColumn(@Nullable Object var1);
boolean containsValue(@Nullable Object var1);
//以上是确定 是否包含行 列 值
V get(@Nullable Object var1, @Nullable Object var2);
// 通过 行列值得到键
boolean isEmpty();//判断是否为空
int size(); //返回map的 值的个数
boolean equals(@Nullable Object var1);
int hashCode();
void clear();//清除所有 cell
V put(R var1, C var2, V var3); //存放
void putAll(Table
V remove(@Nullable Object var1, @Nullable Object var2); //先用R也就是行去获得了列的map,然后再用列的map去做具体处理。
Map row(R var1); //取得 row map
Map column(C var1); //取得 colum map
Set
Set
Set
Collection values(); //得到Collection
Map> rowMap(); //返回 列map
Map> columnMap(); //返回行map
public interface Cell
R getRowKey();
C getColumnKey();
V getValue();
boolean equals(@Nullable Object var1);
int hashCode();
}
}
5. ClassTolnstanceMap
ClassToInstanceMap提供了一种是用Class作为Key, 对应实例作为Value的途径.他定义了T getInstance(Class
public interface ClassToInstanceMap extends Map
T putInstance(Class var1, @Nullable T var2);
}
ClassToInstanceMap
map.putInstance(Integer.class, Integer.valueOf(0));
map.putInstance(Integer.class, 100);
map.putInstance(Float.class, 10.01f);
TestDemo testDemo = new TestDemo();
ClassToInstanceMap
map1.putInstance(TestDemo.class,testDemo);
System.out.println(map.getInstance(Integer.class));
System.out.println(map.getInstance(Float.class));
map1.getInstance(TestDemo.class).show();
//他是一个由B的子类和B的实例构成的Map -- 通常, B就是Object
6.RangeSet
RangeSet类是用来存储一些不为空的也不相交的范围的数据结构
Guava 中定义了 Range Range定义了连续跨度的范围边界,这个连续跨度是一个可以比较的类型(Comparable type)。比如1到100之间的整型数据。
Guava Range 概念,范围和方法
概念表示范围guava对应功能方法
(a..b){x | a < x < b}open(C, C)
[a..b]{x | a <= x <= b} closed(C, C)
[a..b){x | a <= x < b}closedOpen(C, C)
(a..b]{x | a < x <= b}openClosed(C, C)
(a..+∞){x | x > a}greaterThan(C)
[a..+∞){x | x >= a}atLeast(C)
(-∞..b){x | x < b}lessThan(C)
(-∞..b]{x | x <= b}atMost(C)
(-∞..+∞)all valuesall()
public interface RangeSet
boolean contains(C var1);
Range
boolean encloses(Range
boolean enclosesAll(RangeSet
boolean isEmpty();
Range
Set
RangeSet
RangeSet
void add(Range
void remove(Range
void clear();
void addAll(RangeSet
void removeAll(RangeSet
boolean equals(@Nullable Object var1);
int hashCode();
String toString();
}