34

STL マルチセットのように機能するデータ構造が必要ですが、Java の TreeSet では要素の重複が許可されません。マルチセットと同等のJavaの組み込みデータ構造はありますか?

4

7 に答える 7

19

標準のJavaライブラリにはマルチセットはありません。マルチセットクラスを含むGoogleGuavaフレームワークを使用する必要があります。 見る

于 2012-09-24T13:09:15.620 に答える
8

Algorithms 4th editionにはBag実装があり、本の Web サイトで入手できます。javadocはオンラインでも表示できます。

Bag クラスは、一般的なアイテムのバッグ (またはマルチセット) を表します。任意の順序でのアイテムの挿入と反復をサポートします。

必要なものがあればソース コードを見たいだけかもしれませんがBag、 には他にも興味深いものがたくさんあるalgs4.jarので、一見の価値があります。

于 2012-10-02T22:47:36.863 に答える
2

Apache Commons CollectionsにはBagSortedBagインターフェースがあります。TreeBagあなたのニーズを満たすかもしれないように思えますが、選択できる実装はたくさんあります。

于 2012-09-24T13:12:58.050 に答える
0

1.8 以降、Map では次のことが可能になりました。

  map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);

各値は、オンデマンドで作成されるセットに追加されます。

remove() も変更する必要があるかもしれません。

于 2020-12-18T18:49:49.593 に答える