Multiset的简单应用


前言

Guava引入了很多JDK没有的、但我们发现明显有用的新集合类型。这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念。作为一般规则,Guava集合非常精准地遵循了JDK接口契约。


一、Multiset是什么?

Multiset是Guava提供的一个新集合类型,它可以多次添加相等的元素。

统计一个词在文档中出现了多少次,传统的做法是这样的:

Map<String, Integer> counts = new HashMap<String, Integer>();
for (String word : words) {
    Integer count = counts.get(word);
    if (count == null) {
        counts.put(word, 1);
    } else {
        counts.put(word, count + 1);
    }
}

这个写法太笨拙,Multiset的出现解决了此问题。
Multiset的部分方法如下:

方法描述
count(E)给定元素在Multiset中的计数
add(E, int)增加给定元素在Multiset中的计数
remove(E, int)减少给定元素在Multiset中的计数
setCount(E, int)设置给定元素在Multiset中的计数,不可以为负数
size()返回集合元素的总个数(包括重复的元素)

简单应用

Multiset<String> set = HashMultiset.create();// 创建Multiset,HashMultiset是其中一个实现类
System.out.println(set.count("a"));// 输出0
System.out.println(set.count("b"));// 输出0
set.add("a");// 添加一个元素a
System.out.println(set.count("a"));// 输出1
set.add("a", 2);// 添加2个元素a
System.out.println(set.count("a"));// 输出3
set.add("b", 3);// 添加3个元素b
System.out.println(set.count("b"));// 输出3
System.out.println(set.size());// 输出6

总结:在某些复杂的业务场景里面合理应用,可以大大的减少代码量,提供开发效率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值