如何实现一种兼容Set的无序以及List的可重复的数据结构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
Java 中,提供了很多常用的数据结构。比如,Map、List、Set 等。但是,在很多时候,我们可能需要统计某个数据出现的次数,这时往往我们的实现代码可能如下所示:
如果在多个项目,或者是一个项目中,有多个方法,多个功能需要这种统计功能。那么能不能把这种实现,抽取成一个新的数据结构,方便我们在任何地方使用?这就是本文所要说的,一种兼容Set的无序,List的可重复的数据结构:Multiset。
这个问题,有可能你在面试中也会被问到。因为数据结构,看似最枯燥,但它具有最长久的生命力。
Guava 类库中提供了一种兼容 Set 的无序,List 的可重复的数据结构 Multiset。Multiset 底层还是数据结构,它就相当于对我们上面的代码进行了封装。同时也算是对 Java 中数据结构的一种扩展。
当使用 Multiset 后,我们的代码就变得非常的简单了。我们只需存放,而最终的出现次数,重复次数,只需要通过 count 方法就可以获得,非常的方便。
同时 Multiset 还提供了 setCount(E, int) 方法,可以修改元素 E 在 Multiset 中的次数,但是不能把元素出现的次数修改为负数和大于 Integer.MAX_VALUE 的值,否则将会抛出异常。
Multiset 中的几个特点,可以总结如下:
Multiset 中的元素出现的次数只能为正数,前面说了原因。
如果E的出现次数为 0,那么 E 将不出现在 multiset中,是不能在 elementSet() 和 entrySet() 的视图中。
multiset.size() 返回这个集合的大小,相当于在 multiset 中元素的出现的总数。
如果想得到 multiset 中不同元素出现的总数,可以利用 elementSet().size() 来实现。
multiset.iterator() 可以遍历 Multiset 中的所有元素,所以 iteratior 遍历的次数就等于 multiset.size()。
Multiset 支持添加、删除元素,设置元素出现的次数;
setCount(elem, 0) 相当于移除 elem 的所有元素。
multiset.count(elem) 方法中的 elem 如果没有出现在 Multiset 中,那么它的返回值永远都是 0。
关于如何实现一种兼容Set的无序以及List的可重复的数据结构问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。