2012-04-04 18 views

答えて

1

非常に性質上、ハッシュベースのデータ構造は順序付けられていません。追加のデータ構造(これは多かれ少なかれLinkedHashMap)を補うためのラッパーを書くことができます。しかし、ハッシュセットとリストを保持することは意味をなさないが、良い順序を維持するためには、ツリーまたは同様のデータ構造が必要です。しかしツリーはそれ自身でセットとして機能することができるので、本質的に情報を複製することになります(set plus listの場合よりも2つ以上の異なるセットの実装が異なる)。したがって、最善の解決策は、注文が必要な場合はTreeSetまたは別のSortedSetを使用することです。

1

それはHashSetありませんが、Setの子孫として、あなたはTreeSet

このクラスは、TreeMapのインスタンスに基づくSetインタフェースを実装しています。ソートセットが昇順の要素の順序になることをこのクラスを保証

あなたはイテレータに

公共イテレータイテレータ()

は、要素の反復子を返しますを使用して要素をトラバースすることができますこのセットで。要素は昇順に返されます。

0

私は同じ:)あなたはLinkedHashSetのを使用することができますが、TreeSetのを使用することができますが、その中のすべての操作は、(n)は

をLGれ

1

間違いない...関係しているのTreeMapはありだと思うけどハッシュセットの上にリンクされたリストを保持しますが、挿入順序は維持されます(最初に挿入されるのはイテレータの最初の要素です)、自然順序またはカスタム順序を持つことはできません。

TreeSet + HashSetのアプローチ各要素が保持され、addとremoveがまだlg(n)である間は、包含は期待されるo(n)

賢明に選択:

関連する問題