Spec-Zone.ru › OpenJDK 27

Класс SizeSequence

java.lang.Object
javax.swing.SizeSequence
public class SizeSequence extends Object
Объект SizeSequence эффективно поддерживает упорядоченный список размеров и соответствующих позиций. Одним из случаев, когда SizeSequence может быть полезен, является компонент, отображающий несколько строк неодинакового размера. В этом случае один объект SizeSequence можно использовать для отслеживания высоты и Y-позиций всех строк.

Другим примером может быть многоколоночный компонент, например JTable, в котором размеры столбцов неодинаковы. Компонент JTable может использовать один объект SizeSequence для хранения ширины и X-позиций всех столбцов. Затем компонент JTable может использовать объект SizeSequence, чтобы найти столбец, соответствующий определённой позиции. Компонент JTable может обновлять объект SizeSequence при изменении размера одного или нескольких столбцов.

На следующем рисунке показана связь между данными о размере и позиции для многоколоночного компонента.

The first item begins at position 0, the second at the position equal
to the size of the previous item, and so on.

На рисунке первый индекс (0) соответствует первому столбцу, второй индекс (1) — второму столбцу и так далее. Позиция первого столбца начинается с 0, а сам столбец занимает size0 пикселей, где size0 — значение, возвращаемое getSize(0). Таким образом, первый столбец заканчивается на позиции size0 - 1. Затем второй столбец начинается с позиции size0 и занимает size1 (getSize(1)) пикселей.

Обратите внимание, что объект SizeSequence просто представляет интервалы вдоль оси. В наших примерах интервалы обозначают высоту или ширину в пикселях. Однако с тем же успехом можно использовать и любую другую единицу измерения (например, время в днях).

Примечания по реализации

Обычно при хранении размеров и позиций элементов выбирают, что именно хранить: размеры или позиции. Две часто необходимые при отрисовке операции: getIndex(position) и setSize(index, size). При любом выборе внутреннего формата одна из этих операций становится затратной, когда число элементов велико. Если хранятся размеры, поиск индекса элемента, содержащего заданную позицию, требует времени, линейно зависящего от числа элементов. Если же хранятся позиции, изменение размера элемента с заданным индексом требует обновления позиций затронутых элементов, что также является линейной операцией.

Подобно описанным выше подходам, этот класс содержит внутри массив из N целых чисел, но использует гибридное кодирование, занимающее промежуточное положение между подходами на основе размеров и на основе позиций. В результате получается структура данных, для хранения информации в которой требуется столько же места, но большинство операций выполняется за время Log(N), а не O(N), где N — число элементов в списке.

Две операции, время выполнения которых по-прежнему линейно зависит от числа элементов (O(N)), — это методы insertEntries и removeEntries. Оба метода преобразуют внутренний массив в набор целочисленных размеров, копируют его в новый массив, а затем заново формируют гибридное представление на месте.

Начиная с:
1.3

Краткое описание конструкторов

Конструктор Описание
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.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Будит один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Будит все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени.

Подробное описание конструкторов

SizeSequence

public SizeSequence()
Создаёт новый объект SizeSequence, не содержащий элементов. Чтобы добавить элементы, можно использовать insertEntries или setSizes.
См. также:
  • insertEntries(int, int, int)
  • setSizes(int[])

SizeSequence

public SizeSequence(int numEntries)
Создаёт новый объект SizeSequence, содержащий указанное число элементов, размер каждого из которых изначально равен 0.
Параметры:
numEntries — количество размеров для отслеживания
Исключения:
NegativeArraySizeException — если numEntries < 0

SizeSequence

public SizeSequence(int numEntries, int value)
Создаёт новый объект SizeSequence, содержащий указанное число элементов, размер каждого из которых изначально равен value.
Параметры:
numEntries — количество размеров для отслеживания
value — начальное значение размера каждого элемента

SizeSequence

public SizeSequence(int[] sizes)
Создаёт новый объект SizeSequence, содержащий указанные размеры.
Параметры:
sizes — массив размеров, которые будут содержаться в SizeSequence

Подробное описание методов

setSizes

public void setSizes(int[] sizes)
Сбрасывает этот объект SizeSequence, используя данные аргумента sizes. Этот метод повторно инициализирует объект так, чтобы он содержал столько же элементов, сколько элементов в массиве sizes. Размер каждого элемента инициализируется значением соответствующего элемента массива sizes.
Параметры:
sizes — массив размеров, которые будут содержаться в этом объекте SizeSequence

getSizes

public int[] getSizes()
Возвращает размер всех элементов.
Возвращает:
новый массив, содержащий размеры элементов этого объекта

getPosition

public int getPosition(int index)
Возвращает начальную позицию указанного элемента. Например, getPosition(0) возвращает 0, getPosition(1) равно getSize(0), getPosition(2) равно getSize(0) + getSize(1) и так далее.

Обратите внимание: если index больше length, возвращаемое значение может быть бессмысленным.

Параметры:
index — индекс элемента, позиция которого требуется
Возвращает:
начальную позицию указанного элемента

getIndex

public int getIndex(int position)
Возвращает индекс элемента, соответствующего указанной позиции. Например, getIndex(0) равен 0, поскольку первый элемент всегда начинается с позиции 0.
Параметры:
position — позиция элемента
Возвращает:
индекс элемента, занимающего указанную позицию

getSize

public int getSize(int index)
Возвращает размер указанного элемента. Если index выходит за пределы диапазона (0 <= index < getSizes().length), поведение не определено.
Параметры:
index — индекс элемента
Возвращает:
размер элемента

setSize

public void setSize(int index, int size)
Задаёт размер указанного элемента. Обратите внимание: если значение index не входит в диапазон (0 <= index < getSizes().length), поведение не определено.
Параметры:
index — индекс элемента
size — размер элемента

insertEntries

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)

removeEntries

public void removeEntries(int start, int length)
Удаляет из этого объекта SizeSequence непрерывную группу элементов. Обратите внимание, что значения start и length должны удовлетворять следующим условиям: (0 <= start < getSizes().length) AND (length >= 0). Если эти условия не выполнены, поведение не определено и может быть выброшено исключение.
Параметры:
start — индекс первого удаляемого элемента
length — число удаляемых элементов

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API