码迷,mamicode.com
首页 > 其他好文 > 详细

guava 之 Multiset/Multimap 使用总结

时间:2020-09-17 23:25:32      阅读:24      评论:0      收藏:0      [点我收藏+]

标签:rgb   多个   对象   个数   需要   返回结果   system   移除   执行   

Multiset集合

  Multiset是什么?顾名思义,Multiset和Set的区别就是可以保存多个相同的对象。在JDK中,List和Set有一个基本的区别,就是List可以包含多个相同对象,且是有顺序的,而Set不能有重复,且不保证顺序(有些实现有顺序,例如LinkedHashSet和SortedSet等)所以Multiset占据了List和Set之间的一个灰色地带:允许重复,但是不保证顺序。
  常见使用场景:Multiset有一个有用的功能,就是跟踪每种对象的数量,所以你可以用来进行数字统计。 常见的普通实现方式如下:

String strWorld = "wer|dfd|dd|dfd|dda|de|dr";
String[] words = strWorld.split("\\|");

Multiset<String> wordsMultiset = HashMultiset.create();
wordsMultiset.addAll(Arrays.asList(words));

for (String key : wordsMultiset.elementSet()) {
    System.out.println(key + " count:" + wordsMultiset.count(key));
}
/**
  dd count:1
  dda count:1
  de count:1
  dfd count:2
  wer count:1
  dr count:1
*/

Multiset不是Map

  需要注意的是Multiset不是一个Map<E,Integer>,尽管Multiset提供一部分类似的功能实现。其它值得关注的差别有:
  Multiset中的元素的重复个数只会是正数,且最大不会超过Integer.MAX_VALUE。设定计数为0的元素将不会出现multiset中,也不会出现elementSet()和entrySet()的返回结果中。
  multiset.size() 方法返回的是所有的元素的总和,相当于是将所有重复的个数相加。如果需要知道每个元素的个数可以使用elementSet().size()得到.(因而调用add(E)方法会是multiset.size()增加1).
  Multiset 支持添加、移除多个元素以及重新设定元素的个数。执行setCount(element,0)相当于移除multiset中所有的相同元素。
  调用multiset.count(elem)方法时,如果该元素不在该集中,那么返回的结果只会是0。

 

guava 之 Multiset/Multimap 使用总结

标签:rgb   多个   对象   个数   需要   返回结果   system   移除   执行   

原文地址:https://www.cnblogs.com/liang1101/p/13659196.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!