Multiset和Set的区别就是可以保存多个相同的对象。在JDK中,List和Set有一个基本的区别,就是List可以包含多个相同对象,且是有顺序的,而Set不能有重复,且不保证顺序(有些实现有顺序,例如LinkedHashSet和SortedSet等)所以Multiset占据了List和Set之间的一个灰色地带:允许重复,但是不保证顺序。
Multiset提供多种实现,主要有:
HashMultiset: 元素存放于HashMap
LinkedHashMultiset: 元素存放于 LinkedHashMap,即元素的排列顺序由第一次放入的顺序决定
TreeMultiset:元素被排序存放于TreeMap
EnumMultiset: 元素必须是 enum 类型
ImmutableMultiset: 不可修改的 Mutiset
常见使用场景:Multiset有一个有用的功能,就是跟踪每种对象的数量,所以你可以用来进行数字统计。
private static void multiset() { ImmutableMultiset<String> set1 = ImmutableMultiset.of("A", "B", "C", "D", "B"); ImmutableMultiset<String> set2 = ImmutableMultiset.of("D", "B", "B", "B", "D", "D", "E", "F"); System.out.println(set1); //[A, B x 2, C, D] System.out.println(set2); //[D x 3, B x 3, E, F] //集合数据过滤 Multiset<String> resultSet = Multisets.filter(set1, new Predicate<String>() { @Override public boolean apply(String input) { return input.indexOf("D") >= 0; } }); System.out.println(resultSet); //[D] //[A, B, C, D] System.out.println(set1.elementSet()); //返回去重后的元素集合 set1.elementSet().stream().forEach(e -> { System.out.println(e + ": " + set1.count(e)); //显示元素及其计数值 }); //返回左set计数减去右set计数的结果大于0的元素 System.out.println(Multisets.difference(set1, set2)); //[A, C] System.out.println(Multisets.difference(set2, set1)); //[D x 2, B, E, F] //交集:返回两个set都存在的、计数值最小的元素 System.out.println(Multisets.intersection(set1, set2)); //[B x 2, D] System.out.println(Multisets.intersection(set2, set1)); //[D, B x 2] //并集:返回两个set所有的、计数值最大的元素 System.out.println(Multisets.union(set1, set2)); //[A, B x 3, C, D x 3, E, F] System.out.println(Multisets.union(set2, set1)); //[D x 3, B x 3, E, F, A, C] //计数求和并做并集 System.out.println(Multisets.sum(set1, set2)); //[A, B x 5, C, D x 4, E, F] }
相关推荐
主要介绍了C++ STL入门教程第七篇,multimap一对多索引,multiset多元集合的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
stl容器multiset的使用 包含6.0代码 以及详细的文档说明
通过实例介绍了 cast(multiset() as) 的使用方法,以处理嵌套表的操作
MultiSet是一款界面简洁的自动程序安装工具。不需要编写程序,用这个程序可以是你从大量的程序安装过程中解放出来。并且可以在安装过程中实现注册信息的输入 Almeza MultiSet Pro 7.8.1绿色版 自动程序安装
almeza multiset pro是一款应用程序批量自动安装工具,使用它你不需要编写程序,可以让你从大量的安装程序过程中解放出来。在安装过程中可以实现程序注册信息的自动输入。制作磁盘: 软件 该向导允许您制作一个...
为符合使用习惯,首先将左侧窗格中的Multimedia修改为“多媒体工具”,Internet修改为“网络工具”,Utilities修改为“系统工具”,方法是在相应的选项上单击右键,选择“重命名”。最后再在右侧窗格的例子上右键...
NULL 博文链接:https://zhang-zling.iteye.com/blog/327409
python库,解压后可用。 资源全名:multiset_multicover-0.4-cp37-cp37m-win_amd64.whl
让你从软件安装中解放,让你从此一键安装千万软件 让你从软件安装中解放,让你从此一键安装千万软件
Almeza MultiSet Pro 是一个自动安装程序用一个简单和方便的接口。很多时候,它需要花费大量的时间,用户在安装操作系统后,安装必要的程序。并在同一时间,用户需要更换光盘的CD-ROM和DVD-ROM驱动器,输入注册数据...
STL_multiset 方法:multisetst; 定义了一个multiset变量st,st里面可以存放T类型数据,并且能自动排序。开始st为空 排序规则:表达式”a<b为true,则a排在b前面 可用的方法 目的 格式 添加元素 st.insert ...
python库,解压后可用。 资源全名:multiset_multicover-0.2-cp310-cp310-win32.whl
全自动软件安装,省去你安装软件的时间和烦恼
解压即可使用 博文链接:https://heisetoufa.iteye.com/blog/368622
Java中的多集您只需要一个文件: : 因为我使用的是SpotBugs,所以有spotbugs-annotations-3.1.0.jar。 但是您也可以删除这些注释。 我的博客: :
Multiset ( 1 , 2 , 3 ) + Multiset ( 3 , 4 , 5 ) // == Multiset(1, 2, 3, 3, 4, 5) // Difference Multiset ( 1 , 2 , 3 ) - Multiset ( 2 , 3 ) // == Multiset(1) // Intersection Multiset ( 1 , 2 , 3 ) & ...
一共四个doc文件,list综合实例、multimap和map的实例、set和multiset的综合实例、vector综合实例
射频识别在SSVEP-BCI基于使用MULTISET典型相关分析
用AVL-tree数据结构作为底层机制,以STL底层空间配置器和iterator_traits编程技法实作出一个独立的关联式容器(map, set, multimap, multiset),并对外提供接口实现和STL完全兼容的容器。