Collections Framework の機能拡張
このページでは、Java
TM
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 つの利点は、高速だということです。
Copyright ©
2001
Sun Microsystems, Inc.
All Rights Reserved.
コメントの送付先:
collections-comments@java.sun.com
Java ソフトウェア