我就吃瓜(Guava): 集合2-> MultiSet,MultiMap,BiMap,Lists
阿新 • • 發佈:2018-12-16
MultiSet : 可以有相同元素的Set
-
MutiSet中對應的元素都有一個count值,也有elementSet()集,來存放去重之後的元素
@Test public void test1() { Multiset<String> multiset = LinkedHashMultiset.create(); multiset.add("a"); multiset.add("a"); multiset.add("a"); multiset.add("b"); multiset.add("c"); multiset.add("c"); //6 System.out.println(multiset.size()); //3 System.out.println(multiset.elementSet().size()); //[a x 3, b, c x 2] System.out.println(multiset.toString()); //設定某個元素的值 multiset.setCount("d", 4); //d:4 System.out.println("d" + ":" + multiset.count("d")); }
MultiMap : 一個key可以對應多個value的Map
@Test public void test2() { Multimap<String, String> multimap = ArrayListMultimap.create(); multimap.put("a", "ak"); multimap.put("a", "ad"); multimap.put("b", "ban"); //3 System.out.println(multimap.keys().size()); //[ban] [ak, ad] for (String s : multimap.keySet()) { System.out.println(multimap.get(s)); } }
BiMap : key和value可以翻轉的map
-
在使用BiMap時,會要求value的唯一性,如果value重複,則會丟擲異常。
-
inverse()方法會返回一個反轉的BiMap,但是這個反轉的map不是新的map物件,他實現了一種檢視關聯,對於反轉後的map的操作都會影響原來的map。
@Test public void test3() { BiMap<String, String> biMap = HashBiMap.create(); biMap.put("sina", "@sina.com"); biMap.put("qq", "@qq.com"); String user = biMap.inverse().get("@sina.com"); //sina System.out.println(user); //true System.out.println(biMap.inverse().inverse() == biMap); biMap.inverse().put("@wb.com", "wb"); //@wb.com System.out.println(biMap.get("wb")); }
Lists : 建立List,以及其他
@Test
public void test1(){
ArrayList<String> strings = Lists.newArrayList();
//按字元分割,
ImmutableList<Character> characters = Lists.charactersOf("hello,world");
for (Character character : characters) {
strings.add(character.toString());
}
//按照長度來進行分割,
List<List<String>> partition = Lists.partition(strings, 5);
//[[h, e, l, l, o], [,, w, o, r, l], [d]]
System.out.println(partition);
}