//不可变map
ImmutableMap<String, String> immutableMap = Maps.uniqueIndex(list, k -> k + "_key");
System.out.println(immutableMap);//{1_key=1, 2_key=2, 3_key=3, 4_key=4}
//可变map
Map<String, String> map = Maps.asMap(Sets.newHashSet("1", "2", "3"), k -> k + "_val");
System.out.println(map);//{1=1_val, 2=2_val, 3=3_val}
Map<String, String> transMap = Maps.transformValues(map, v -> v + "_tran");
System.out.println(transMap);//{1=1_val_tran, 2=2_val_tran, 3=3_val_tran}
//过滤map的key
Map<String, String> filterMap = Maps.filterKeys(map, k -> Lists.newArrayList("1", "2").contains(k));
System.out.println(filterMap);//{1=1_val, 2=2_val}
//Joiner实例是线程安全的
Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("=");
System.out.println(mapJoiner.join(filterMap));//1=1_val,2=2_val
LinkedListMultimap<String, String> multimap = LinkedListMultimap.create();
multimap.put("a", "111");
multimap.put("a", "666");
multimap.put("c", "333");
System.out.println(multimap); //{a=[111, 666], c=[333]}
System.out.println(multimap.get("a")); // [111, 666]
@Test
public void testMultimaps() {
Multimap<String, String> multimap = ArrayListMultimap.create();
multimap.put("1", "1");
multimap.put("1", "2");
multimap.put("1", "3");
multimap.put("5", "25");
System.out.println("multimap: " + multimap);//multimap: {1=[1, 2, 3], 5=[25]}
System.out.println(multimap.keys()); //[1 x 3, 5]
System.out.println(multimap.keySet()); //[1, 5]
System.out.println(multimap.get("1")); //[1, 2, 3]
}
//HashBiMap存储的键和值都只能唯一,不存在键与键、值与值相同的情况
@Test
public void test() {
HashBiMap<String, String> hashBiMap = HashBiMap.create();
hashBiMap.put("1", "2");
System.out.println(hashBiMap);
//hashBiMap.put("2", "2"); //value already present: 2
System.out.println(hashBiMap);
}
@Test
public void testInverse() {
HashBiMap<String, String> hashBiMap = HashBiMap.create();
hashBiMap.put("1", "22");
hashBiMap.put("3", "44");
hashBiMap.put("5", "66");
System.out.println(hashBiMap);//{1=22, 3=44, 5=66}
BiMap<String, String> inverse = hashBiMap.inverse();//反转是生成新的对象,不改变原map
System.out.println(hashBiMap);//{1=22, 3=44, 5=66}
System.out.println(inverse);//{22=1, 44=3, 66=5}
}
@Test
public void testForcePut() {
HashBiMap<String, String> hashBiMap = HashBiMap.create();
hashBiMap.put("1", "22");
//hashBiMap.put("2", "22"); //value already present: 22
hashBiMap.forcePut("2", "22");
System.out.println(hashBiMap); //{2=22}
}
网友评论