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);
}