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

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

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

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

更新:如果您确实要将对象存储两次,请使用带有Map>

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

Bag类表示一般(或多个)通用项目。 它支持以任意顺序插入和迭代项目。

你可能只想查看源代码,如果你只需要Bag ,但algs4.jar还有很多其他有趣的东西,所以值得一看。

Apache Commons Collections有BagSortedBag接口。 听起来TreeBag可能满足您的需求,但有很多实现可供选择。

 TreeSet set = new TreeSet<>(); TreeSet multiset = new TreeSet<>((i, j) -> i < j ? 1 : -1); 

通过制作1!= 1制作一套多重集!