Multimap
1.创建
Multimap<String,Object> map = ArrayListMultimap.create();
2.存值
//这里不会对其覆盖,得到的key里面拥有Bannana和Apple
map.put("Fruits","Bannana");
map.put("Fruits","Apple");
3.取值
//这里可以在map.put前面进行类型强转
Collection<Object> fruits = map.get("Fruits");
//遍历拿值,这里有坑(后面讲)
for(String key:map.keys()){
Collection<Object> objects = map.get(key);
}
ListMultimap/SetMultimap/HashMultimap/TreeMultiMap/LinkedHashMultimap
1.创建
ListMultimap<String,String> map = ArrayListMultimap.create();
2.存值
//这里不会对其覆盖,得到的key里面拥有Bannana和Apple,放在list里面
map.put("Fruits","Bannana");
map.put("Fruits","Apple");
3.取值
//这里可以在map.put前面进行类型强转
List<String> fruits = map.get("Fruits");
//遍历拿值,这里会遍历两次,即拿到两个key同为Fruits,值分别对应Bannana和Apple
for(String key:map.keys()){
List<String> objects = map.get(key);
}
//要想相同key仅仅遍历一次,需要拿到所有key再去重,再用for遍历下面的distinctKey
Multiset<String> keys = maps.keys();
List<String> distinctKey = keys.stream().distinct().collect(Collectors.toList());
不同
ListMultimap可以存重复的值(value为List)
SetMultimap存唯一的值(value为Set)
HashMultimap存的值一样的话后面的会把前面的覆盖