|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--javax.swing.SizeSequence
SizeSequence
オブジェクトは、サイズおよび対応する位置の、順序付けされたリストを効果的に維持します。SizeSequence
の状況として適切な例としては、サイズが等しくない複数の行を表示するコンポーネントの場合があります。この場合、単一の SizeSequence
オブジェクトを使って、すべての行の高さと Y 位置を追跡できます。
もう 1 つの例として、列サイズが等しくない JTable
などの複数列コンポーネントがあります。JTable
は、単一の SizeSequence
オブジェクトを使ってすべての列の幅と X 位置を格納できます。続いて JTable
は、SizeSequence
オブジェクトを使って特定の位置に対応する列を見つけることができます。1 つまたは複数の列サイズが変更になったときにはいつでも、JTable
は SizeSequence
オブジェクトを更新できます。
次の図は、複数列コンポーネントのサイズと位置データの関係を示しています。
この図で、最初のインデックス (0) は最初の列に対応し、2 番目のインデックス (1) は 2 番目の列に対応する、というようになっています。最初の列の位置は 0 で始まり、この列は size0 ピクセルを占めます。size0 は getSize(0)
が返す値です。したがって最初の列は size0 - 1 で終わります。続いて 2 番目の列が size0 から始まり、size1 (getSize(1)
) ピクセルを占めます。
SizeSequence
オブジェクトは単に軸に沿った間隔を表します。上記の例では、間隔はピクセル単位の高さまたは幅を表しています。しかし、一日のうちの時間など、他の測定単位も同じように有効です。
getIndex(position)
と setSize(index, size)
です。内部形式にどちらを選んでも、エントリ数が大きくなると 2 の操作のどちらかは効率が悪くなります。サイズを格納した場合、特定の位置を囲むエントリのインデックスの検索は、エントリ数に比例して時間がかかります。逆に位置を格納した場合、特定のインデックスにあるエントリのサイズの設定は、影響を受けるエントリの位置を更新する必要があり、やはりエントリ数に比例して計算に時間がかかります。
上記の方法と同じく、このクラスは内部に N 個の整数の配列を保持しますが、サイズベースの方法と位置ベースの方法の中間の、ハイブリッドなエンコーディングを使います。これによって、情報を格納するのに必要な空間は同じですが、ほとんどの操作を O(N) 時間ではなく Log(N) 時間で実行できるデータ構造となります。N はリストにあるエントリ数です。
エントリ数の O(N) のまま残る操作は、insertEntries
メソッドと removeEntries
メソッドの 2 つです。両メソッドとも、内部配列を整数サイズのセットに変換し、それを新しい配列にコピーし、そのあとハイブリッド表現を適切に修正することによって実装します。
コンストラクタの概要 | |
SizeSequence()
エントリを格納していない新しい SizeSequence オブジェクトを生成します。 |
|
SizeSequence(int numEntries)
指定された数のエントリを格納する、新しい SizeSequence オブジェクトを生成します。 |
|
SizeSequence(int[] sizes)
指定されたサイズを格納する新しい SizeSequence オブジェクトを生成します。 |
|
SizeSequence(int numEntries,
int value)
指定された数のエントリを格納する、新しい SizeSequence オブジェクトを生成します。 |
メソッドの概要 | |
int |
getIndex(int position)
指定された位置に対応するエントリのインデックスを返します。 |
int |
getPosition(int index)
指定された配列の開始位置を返します。 |
int |
getSize(int index)
指定されたエントリのインデックスを返します。 |
int[] |
getSizes()
全エントリのサイズを返します。 |
void |
insertEntries(int start,
int length,
int value)
連続するエントリのグループをこの SizeSequence に追加します。 |
void |
removeEntries(int start,
int length)
連続するエントリのグループをこの SizeSequence から削除します。 |
void |
setSize(int index,
int size)
指定されたエントリのサイズを設定します。 |
void |
setSizes(int[] sizes)
sizes 引数を使って、この SizeSequence オブジェクトをリセットします。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
public SizeSequence()
SizeSequence
オブジェクトを生成します。エントリを登録するには、insertEntries
または setSizes
を使います。
insertEntries(int, int, int)
,
setSizes(int[])
public SizeSequence(int numEntries)
SizeSequence
オブジェクトを生成します。エントリはすべて、サイズ 0 に初期化されています。
numEntries
- 追跡するサイズの数
NegativeArraySizeException
- numEntries
の値が 0 より小さい場合public SizeSequence(int numEntries, int value)
SizeSequence
オブジェクトを生成します。エントリはすべて、サイズ value
に初期化されています。
numEntries
- 追跡するサイズの数value
- 各サイズの初期値public SizeSequence(int[] sizes)
SizeSequence
オブジェクトを生成します。
sizes
- SizeSequence
に格納されるサイズの配列メソッドの詳細 |
public void setSizes(int[] sizes)
sizes
引数を使って、この SizeSequence
オブジェクトをリセットします。このメソッドは、このオブジェクトが sizes
配列と同じだけのエントリを格納するよう初期化します。各エントリのサイズは、sizes
の対応する項目の値に初期化されます。
sizes
- この SizeSequence
に格納されるサイズの配列public int[] getSizes()
public int getPosition(int index)
getPosition(0)
は 0 を返し、getPosition(1)
は getSize(0)
を、getPosition(2)
は getSize(0)
+ getSize(1)
を返します。
index
が length
より大きい場合、返される値は無意味です。
index
- 位置が要求されているエントリのインデックス
public int getIndex(int position)
getIndex(0)
は 0 ですが、これは、最初のエントリはいつも位置 0 から始まるためです。
position
- エントリの位置
public int getSize(int index)
index
が一定の範囲内 (0 <= index < getSizes().length)
にない場合、動作は未確定です。
index
- エントリに対応するインデックス
public void setSize(int index, int size)
index
の値が一定の範囲内 (0 <= index < getSizes().length)
にない場合、動作は未確定です。
index
- エントリに対応するインデックスsize
- エントリのサイズpublic void insertEntries(int start, int length, int value)
SizeSequence
に追加します。start
と length
の値は、(0 <= start < getSizes().length) AND (length >= 0)
の条件を満たす必要があります。この条件を満たさない場合、動作が未確定なため、例外がスローされる場合があります。
start
- グループの最初のエントリに割り当てるインデックスlength
- グループのエントリ数value
- 新しい各エントリに割り当てるサイズ
ArrayIndexOutOfBoundsException
- パラメータが一定の範囲 (0 <= start < (getSizes().length)) AND (length >= 0)
内にない場合public void removeEntries(int start, int length)
SizeSequence
から削除します。start
と length
の値は、(0 <= start < getSizes().length) AND (length >= 0)
の条件を満たす必要があります。この条件を満たさない場合、動作が未確定なため、例外がスローされる場合があります。
start
- 削除される最初のエントリのインデックスlength
- 削除されるエントリの数
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.