このページでは、JavaTM 2 SDK バージョン 1.4 の Collections Framework の拡張機能について説明します。
- Collections ユーティリティークラスに、新しいメソッドが追加されました。
- rotate(List list, int distance) - リストにあるすべての要素を、指定した距離だけ回転させる。この操作は、GUI の計算では一般的です。サブリストにこの操作を適用すると、表の 1 つまたは複数の列移動を効果的に行うことができます。この操作は、数学や科学の計算でも広く用いられています。
- replaceAll(List list, Object oldVal, Object newVal) - 指定した値をすべて別の値に置き換える。これは本来、簡易メソッドです。プログラムは難しくありませんが、非常に幅広く必要とされています。
- indexOfSubList(List source, List target) - target と等しい source の最初のサブリストのインデックスを返します。一般に、テキスト処理を含む多くの領域で使用されます。
- lastIndexOfSubList(List source, List target) - target と等しい source の最後のサブリストのインデックスを返します。一般に、テキスト処理を含む多くの領域で使用されます。
- swap(List list, int i, int j) - 指定したリスト内の指定した位置にある要素をスワップします。この実装はネイティブな実装よりも高速ですが、本来は簡易メソッドです。
- list(Enumeration e) - 指定した列挙によって返された要素を格納する ArrayList を返します。この簡易メソッドによって、列挙を返す従来の API と、コレクションを必要とする新しい API との相互運用が可能になります。
- 新しい RandomAccess インタフェースは、List の実装が高速ランダムアクセス (通常は一定時間) をサポートしていることを示すためのマーカインタフェースです。これによりジェネリックアルゴリズムがランダムアクセスリストまたは順次アクセスリストのいずれかに適用されるとき、その動作を変更してパフォーマンスを向上することができます。
- 新しい LinkedHashMap クラスは、挿入順に実行される Map 実装であり、HashMap と同じほど高速で実行されます。内部的には、挿入順に実行される二重にリンクされたリストがあるハッシュテーブルを使用します。これに対応する Set の実装もあり、LinkedHashSet と呼ばれています。
- 新しい IdentityHashMap クラスは、識別情報ベースの Map 実装であり、ハッシュテーブルに基づいています。直列化やディープコピーなどのように、トポロジを維持しながらオブジェクトグラフを変形する場合に、このクラスは便利です。このような変形を行うには、どのオブジェクトが表示済みかを追跡する識別情報ベースの「ノードテーブル」を保守する必要があります。同一性ベースのマップを使って、動的なデバッガや同様のシステムでオブジェクトとメタ情報のマッピングを保守することもできる。また、同一性ベースのマップは equals メソッドを意図的に歪ませることによって発生する「不正行為」を防ぐ場合に有用です (IdentityHashMap がキーに対して equals メソッドを呼び出すことはない)。この実装のもう 1 つの利点は、高速だということである。