public class SizeSequence extends Object
SizeSequence对象有效地维护有序的大小和相应位置的列表。 
       SizeSequence可能适合的情况是显示多行不等大小的组件。 
       在这种情况下,可以使用单个SizeSequence对象跟踪所有行的高度和Y位置。 
        另一个例子是多列组件,例如JTable ,其中列大小并不都相等。 JTable可能使用单个SizeSequence对象来存储所有列的宽度和X位置。 JTable可以使用SizeSequence对象来查找对应于某个位置的列。 每当一个或多个列大小更改时, JTable可以更新SizeSequence对象。 
下图显示了多列组件的大小和位置数据之间的关系。
 
 
        在图中,第一索引(0)对应于第一列,第二索引(1)到第二列,等等。 第一列的位置从0开始,列占用大小0像素,其中大小0是由getSize(0)返回的值。 因此,第一列以大小0-1结束。然后第二列从位置大小0开始并占据大小1 ( getSize(1) )像素。 
 请注意, SizeSequence对象简单地表示沿轴的间隔。 在我们的示例中,间隔代表高度或宽度(以像素为单位)。 但是,任何其他计量单位(例如,以天为单位)都可以同样有效。 
getIndex(position)和setSize(index, size) 。 
       无论选择哪种内部格式,当条目数量变大时,这些操作之一都是昂贵的。 
       如果存储大小,则查找包含特定位置的条目的索引在条目数量上是线性的。 
       如果替换存储位置,则在特定索引处设置条目的大小需要更新受影响的条目的位置,这也是线性计算。 
       像上述技术一样,这个类在内部保存一个N个整数的数组,但是使用混合编码,这是基于大小和基于位置的方法之间的一半。 结果是数据结构占用相同的空间来存储信息,但可以在Log(N)时间而不是O(N)中执行大多数操作,其中N是列表中的条目数。
 在条目数量上保持O(N)的两个操作是insertEntries和removeEntries方法,这两个操作都是通过将内部数组转换为一组整数大小来实现的,将其复制到新数组中,然后重新构建混合表示到位。 
| Constructor and Description | 
|---|
| SizeSequence()
              创建一个不包含条目的新的 
              SizeSequence对象。 | 
| SizeSequence(int numEntries)
              创建一个新的 
              SizeSequence对象,其中包含指定数量的条目,全部初始化为大小为0。 | 
| SizeSequence(int[] sizes)
              创建一个包含指定大小的新的 
              SizeSequence对象。 | 
| SizeSequence(int numEntries, int value)
              创建一个新的 
              SizeSequence对象,其中包含指定数量的条目,全部初始化为value。 | 
| Modifier and Type | Method and Description | 
|---|---|
| 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 。 
          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)
SizeSequence对象,使用sizes参数中的数据。 
           此方法重新初始化此对象,使其包含与sizes数组一样多的条目。 
           每个条目的大小都将初始化为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的值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 - 要删除的条目数 
            Submit a bug or feature 
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, 2014, Oracle and/or its affiliates. All rights reserved.