我就吃瓜(Guava): 集合2-> MultiSet,MultiMap,BiMap,Lists

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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值