google的guava工具包的确很多好东西,包括之前的字符串处理工具类的,还有大量的collection相关的,项目地址在:http://code.google.com/p/guava-libraries/
留意到其中的collection相关类中的map,简单介绍如下,更多的请大家补充挖掘或者
看原来的文档:
guava提供的是多值map!,就是说,一个key,可以对应多个value了,比如一个人会有多个联系号码等,可以表达为:
返回是一个 集合类
Multimap<String, Object> phonebook = ArrayListMultimap.create();
phonebook.put("1", "A");
phonebook.put("2", "B");
phonebook.put("1", "C");
Collection<Object> collection = phonebook.get("1");
System.out.println(phonebook.get("1"));
下面说一下 有关map的查询:
Map<String, Object> map = new HashMap<String, Object>();
map.put("张三", 20);
map.put("李四", 22);
map.put("王五", 25);
// 所有年龄大于20岁的人员
Map<String, Object> map2 = Maps.filterValues(map, new Predicate<Object>() {
@Override
public boolean apply(Object obj) {
return (Integer)obj > 20;
}
});
System.out.println(map2);
再来点例子,加深了解:
Multimap<String, String> multimap = ArrayListMultimap.create();
// Adding some key/value
multimap.put("Fruits", "Bannana");
multimap.put("Fruits", "Apple");
multimap.put("Fruits", "Pear");
multimap.put("Vegetables","Carrot");
// Getting the size
int size = multimap.size();
System.out.println(size); // 4
Collection<String> fruits = multimap.get("Fruits");
System.out.println(fruits);//[Bannana, Apple, Pear]
Collection<String> vegetables = multimap.get("Vegetables");
System.out.println(vegetables);//[Carrot]
// 循环输出
for(String value : multimap.values()){
System.out.println(value);//Bannana,Apple,Pear,Carrot
}
// 移走某个值
multimap.remove("Fruits", "Pear");
System.out.println(multimap.get("Fruits")); //[Bannana, Apple]
//移走某个KEY的所有对应value
multimap.removeAll("Fruits");
System.out.println(multimap.get("Fruits"));//[]