JavaコレクションにはTreeSet、TreeMapがありますが、TreeListはありません。なぜそうなのですか?


ベストアンサー

リスト、マップ、セットの違いについて考えてください。

マップは、キーを使用して物事を検索できる構造です。ルックアップ用に設計する場合、多くのキー比較があり、ルックアップを高速化する必要があることに気付きます。ツリーは、ブランチ内でキーを整理することにより、キー比較プロセスを高速化します。これにより、キー比較の数が削減されます。作成する必要があります。

セットには重複するアイテムはありません。したがって、アイテムを追加するたびに、既存のアイテムと比較して、重複しているかどうかを確認する必要があります。これでマップと同じ問題に戻ったので、ツリーを使用してアイテムを整理し、比較を減らします。

リストには順序があるだけなので、リストは順序がないように簡単に設計できます。」リストの順序で次の(または前の)アイテムを取得するには、比較が必要です。

したがって、ツリーはより良いマップまたはセットを作成するのに役立ちますが、実際にはより良いリストを作成するのに役立ちません。 。

ソート済みリストについて話している場合、アイテムはソート順にリストに挿入されます。これで比較に戻ります。ツリー並べ替えられたリストの作成に役立つように並べ替えます。

回答

リストは順序付けられていますコレクション-つまり、i番目の要素にランダムにアクセスする機能が必要です。コレクションが内部で要素をシャッフルする場合、挿入順序は内部データ構造内の要素の順序と同じにはなりません。したがって、インデックスベースのアクセスに依存することはできなくなりました。したがって、SunはSortedListまたはTreeListクラスを提供しませんでした。Collections.sort(..)を使用して同じことを実現できます。

Apache commons-collectionsはTreeListクラスを提供します( TreeList(Commons Collections 3.2.1 API))が、ソートされたリストではなく、ツリーデータ構造を使用して要素を内部に格納するために呼び出されます

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です