java是否具有像c ++ STL中那样的多集数据结构?

out*_*law 27 java data-structures

我需要一个像STL multiset一样工作的数据结构,但Java中的TreeSet不允许重复元素.Java中是否有内置的数据结构,相当于multiset?

The*_*mer 25

使用Map<E, Integer>Integer计数是Multiset的一个很好的替代品,它也不需要任何第三方库.

更新:如果您确实要将对象存储两次,请使用带有地图的列表Map<E, List<E>>.


小智 12

标准Java库中没有Multiset.您应该使用包含Multiset类的Google Guava框架. 看到

  • Google的multiset与C++ multiset不同:http://stackoverflow.com/questions/18088057/does-treemultiset-only-holds-the-count-of-repeats-for-each-key (3认同)

Bil*_*ard 5

第四版算法有一个Bag实现,可以在本书的网站上找到。您也可以在线查看javadoc

Bag类代表一袋(或多套)通用物品。它支持以任意顺序插入和迭代项目。

如果需要的话,您可能只想看一下源代码Bag,但是中还有很多其他有趣的东西algs4.jar,因此值得一看。