public class SizeSequence extends Object
SizeSequence
объект эффективно поддерживает упорядоченный список размеров и соответствующих позиций. Одна ситуация та, для который SizeSequence
могло бы быть соответствующим, находится в компоненте, который выводит на экран многократные строки неравного размера. В этом случае, сингл SizeSequence
объект мог использоваться, чтобы отследить высоты и позиции Y всех строк. Другим примером был бы многоколонный компонент, такой как a JTable
, в котором размеры столбца не все равны. JTable
мог бы использовать сингл SizeSequence
возразите, чтобы сохранить ширины и X позиций всех столбцов. JTable
мог тогда использовать SizeSequence
возразите, чтобы найти столбец, соответствующий определенной позиции. JTable
мог обновить SizeSequence
возразите всякий раз, когда один или более размеров столбца изменились.
Следующие данные показывают отношение между размером и данными позиции для многоколонного компонента.
В числе первые индексируют (0), соответствует первому столбцу, вторые индексируют (1) к второму столбцу и так далее. Позиция первого столбца запускается в 0, и столбец занимает size0 пиксели, где size0 является значением, возвращенным getSize(0)
. Таким образом первый столбец заканчивается в size0 - 1. Второй столбец тогда начинается в позиции size0 и занимает size1 (getSize(1)
) пиксели.
Отметьте это a SizeSequence
объект просто представляет интервалы вдоль оси. В наших примерах интервалы представляют height или width в пикселях. Однако, любая другая единица измерения (например, время в днях) могла быть столь допустимой.
getIndex(position)
и setSize(index, size)
. Какой бы ни выбор внутреннего формата делается, одна из этих операций дорогостоящая, когда число записей становится большим. Если размеры сохранены, находя индексирование записи, которая включает определенную позицию, линейно в числе записей. Если позиции сохранены вместо этого, устанавливая размер записи в детали индексирует, требует обновления позиций записей, на которые влияют, который является также линейным вычислением. Как вышеупомянутые методы этот class содержит массив целых чисел N внутренне, но использует гибридное кодирование, которое является лежащим на полпути между основанными на размере и позиционно-на основе подходами. Результатом является структура данных, которая занимает то же самое место, чтобы хранить информацию, но может выполнить большинство операций в Журнале (N) время вместо O (N), где N является числом записей в списке.
Две операции, которые остаются O (N) в числе записей, insertEntries
и removeEntries
методы, оба из которых реализуются, преобразовывая внутренний массив в ряд целочисленных размеров, копируя это в новый массив, и затем преобразовывая гибридное представление на месте.
Конструктор и Описание |
---|
SizeSequence()
Создает новое
SizeSequence объект, который не содержит записей. |
SizeSequence(int numEntries)
Создает новое
SizeSequence объект, который содержит конкретное количество записей, все инициализированные, чтобы иметь размер 0. |
SizeSequence(int[] sizes)
Создает новое
SizeSequence объект, который содержит указанные размеры. |
SizeSequence(int numEntries, int value)
Создает новое
SizeSequence объект, который содержит конкретное количество записей, все инициализированные, чтобы иметь размер value . |
Модификатор и Тип | Метод и Описание |
---|---|
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)
Сбросы это
SizeSequence объект, используя данные в sizes параметр. |
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
object that contains the specified number of entries, all initialized to have size value
.numEntries
- the number of sizes to trackvalue
- the initial value of each sizepublic SizeSequence(int[] sizes)
SizeSequence
object that contains the specified sizes.sizes
- the array of sizes to be contained in the SizeSequence
public void setSizes(int[] sizes)
SizeSequence
object, using the data in the sizes
argument. This method reinitializes this object so that it contains as many entries as the sizes
array. Each entry's size is initialized to the value of the corresponding item in sizes
.sizes
- the array of sizes to be contained in this SizeSequence
public int[] getSizes()
public int getPosition(int index)
getPosition(0)
returns 0, getPosition(1)
is equal to getSize(0)
, getPosition(2)
is equal to getSize(0)
+ getSize(1)
, and so on. Note that if index
is greater than length
the value returned may be meaningless.
index
- the index of the entry whose position is desiredpublic int getIndex(int position)
getIndex(0)
is 0, since the first entry always starts at position 0.position
- the position of the entrypublic int getSize(int index)
index
is out of the range (0 <= index < getSizes().length)
the behavior is unspecified.index
- the index corresponding to the entrypublic void setSize(int index, int size)
index
does not fall in the range: (0 <= index < getSizes().length)
the behavior is unspecified.index
- the index corresponding to the entrysize
- the size of the entrypublic void insertEntries(int start, int length, int value)
SizeSequence
. Note that the values of start
and length
must satisfy the following conditions: (0 <= start < getSizes().length)
AND (length >= 0)
. If these conditions are not met, the behavior is unspecified and an exception may be thrown.start
- the index to be assigned to the first entry in the grouplength
- the number of entries in the groupvalue
- the size to be assigned to each new entryArrayIndexOutOfBoundsException
- if the parameters are outside of the range: (0 <= start < (getSizes().length)) AND (length >= 0)
public void removeEntries(int start, int length)
SizeSequence
. Note that the values of start
and length
must satisfy the following conditions: (0 <= start < getSizes().length)
AND (length >= 0)
. If these conditions are not met, the behavior is unspecified and an exception may be thrown.start
- the index of the first entry to be removedlength
- the number of entries to be removed
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.
DRAFT ea-b92