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 < 0public 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 SizeSequencepublic 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 SizeSequencepublic 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