Module  javafx.base
软件包  javafx.collections

Class ModifiableObservableListBase<E>

  • 参数类型
    E - 列表中包含的元素的类型
    All Implemented Interfaces:
    Iterable<E>Collection<E>List<E>ObservableObservableList<E>


    public abstract class ModifiableObservableListBase<E>
    extends ObservableListBase<E>
    抽象类,可作为可修改的ObservableList实现的基类。 要实现一个可修改的ObservableList类,您只需要实现以下一组方法: 和通知,并为您自动建立和发射。

    一个简单的ObservableList委托给另一个List将如下所示:

      public class ArrayObservableList<E> extends ModifiableObservableList<E> {
    
       private final List<E> delegate = new ArrayList<>();
    
       public E get(int index) {
           return delegate.get(index);
       }
    
       public int size() {
           return delegate.size();
       }
    
       protected void doAdd(int index, E element) {
           delegate.add(index, element);
       }
    
       protected E doSet(int index, E element) {
           return delegate.set(index, element);
       }
    
       protected E doRemove(int index) {
           return delegate.remove(index);
       } 
    从以下版本开始:
    JavaFX 8.0
    另请参见:
    ObservableListBase
    • 构造方法详细信息

      • ModifiableObservableListBase

        public ModifiableObservableListBase​()
    • 方法详细信息

      • setAll

        public boolean setAll​(Collection<? extends E> col)
        描述从接口ObservableList复制
        清除ObservableList并添加集合中的所有元素。
        Specified by:
        setAll在接口 ObservableList<E>
        重写:
        setAllObservableListBase<E>
        参数
        col - 将添加到此observableArrayList的元素的集合
        结果
        true(由Collection.add(E)指定)
      • addAll

        public boolean addAll​(Collection<? extends E> c)
        描述从类别复制: AbstractCollection
        将指定集合中的所有元素添加到此集合(可选操作)。 如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。 (这意味着如果指定的集合是此集合,此调用的行为是未定义的,并且此集合是非空的。)
        Specified by:
        addAll在接口 Collection<E>
        Specified by:
        addAll在接口 List<E>
        重写:
        addAllAbstractCollection<E>
        参数
        c - 包含要添加到此集合的元素的集合
        结果
        true如果该收集因呼叫而更改
        另请参见:
        AbstractCollection.add(Object)
      • addAll

        public boolean addAll​(int index,
                              Collection<? extends E> c)
        描述从类别复制: AbstractList
        将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。 将当前位于该位置(如果有的话)的元素和随后的任何元素移动到右边(增加其索引)。 新元素将按照指定集合的迭代器返回的顺序显示在此列表中。 如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。 (注意,如果指定的集合是此列表,并且它是非空的,则会发生这种情况。)
        Specified by:
        addAll在接口 List<E>
        重写:
        addAllAbstractList<E>
        参数
        index - 从中指定集合插入第一个元素的索引
        c - 包含要添加到此列表的元素的集合
        结果
        true如果此列表因呼叫而更改
      • removeRange

        protected void removeRange​(int fromIndex,
                                   int toIndex)
        描述从类别复制: AbstractList
        从此列表中删除所有索引为fromIndex (包括)和toIndex之间的元素。 将任何后续元素移动到左侧(减少其索引)。 这个电话缩小了(toIndex - fromIndex)元素的列表。 (如果是toIndex==fromIndex ,这个操作没有效果)

        此方法由该列表及其子列表中的clear操作调用。 覆盖此方法以利用列表实现的内部结构可以大大提高此列表及其子列表中的clear操作的性能。

        重写:
        removeRangeAbstractList<E>
        参数
        fromIndex - 要删除的第一个元素的索引
        toIndex - 要删除的最后一个元素后的索引
      • add

        public void add​(int index,
                        E element)
        描述从类别复制: AbstractList
        将指定的元素插入此列表中的指定位置(可选操作)。 将当前位于该位置的元素(如果有)和任何后续元素(向其索引添加一个)移动。
        Specified by:
        add在接口 List<E>
        重写:
        addAbstractList<E>
        参数
        index - 要在其中插入指定元素的索引
        element - 要插入的元素
      • set

        public E set​(int index,
                     E element)
        描述从类复制: AbstractList
        用指定的元素(可选操作)替换此列表中指定位置的元素。
        Specified by:
        set在接口 List<E>
        重写:
        setAbstractList<E>
        参数
        index - 要替换的元素的索引
        element - 要存储在指定位置的元素
        结果
        该元素以前在指定的位置
      • remove

        public boolean remove​(Object o)
        描述从类复制: AbstractCollection
        从该集合中删除指定元素的单个实例(如果存在)(可选操作)。 更正式地,删除元素e ,使得Objects.equals(o, e) ,如果该集合包含一个或多个这样的元素。 如果此集合包含指定的元素(或等效地,如果此集合由于调用而更改),则返回true
        Specified by:
        remove在接口 Collection<E>
        Specified by:
        remove在接口 List<E>
        重写:
        removeAbstractCollection<E>
        参数
        o - 要从此集合中删除的元素(如果存在)
        结果
        true如果元素被删除作为此调用的结果
      • remove

        public E remove​(int index)
        描述从类复制: AbstractList
        删除该列表中指定位置的元素(可选操作)。 将任何后续元素移动到左侧(从其索引中减去一个元素)。 返回从列表中删除的元素。
        Specified by:
        remove在接口 List<E>
        重写:
        removeAbstractList<E>
        参数
        index - 要删除的元素的索引
        结果
        该元素以前在指定的位置
      • subList

        public List<E> subList​(int fromIndex,
                               int toIndex)
        说明从类别复制: AbstractList
        返回指定的fromIndex (含)和toIndex之间的列表部分的视图。 (如果fromIndextoIndex相等,返回的列表为空。)返回的列表由此列表支持,因此返回列表中的非结构性更改将反映在此列表中,反之亦然。 返回的列表支持此列表支持的所有可选列表操作。

        该方法消除了对显式范围操作(对于数组通常存在的排序)的需要。 任何期望列表的操作都可以通过传递一个子列表视图而不是整个列表来用作范围操作。 例如,以下成语从列表中移除了一系列元素:

           list.subList(from, to).clear();  
        可以为indexOflastIndexOf构造类似的成语,并且Collections类中的所有算法都可以应用于子列表。

        如果支持列表(即,此列表)以除了通过返回的列表之外的任何方式进行结构修改 ,则此方法返回的列表的语义将变为未定义。 (结构修改是那些改变此列表的大小,或以其他方式扰乱它,使得正在进行的迭代可能产生不正确的结果)。

        Specified by:
        subList在接口 List<E>
        重写:
        subList中的 AbstractList<E>
        参数
        fromIndex - 子列表的低端点(含)
        toIndex - 子列表的高端点(独占)
        结果
        该列表中指定范围的视图
      • get

        public abstract E get​(int index)
        描述从类复制: AbstractList
        返回此列表中指定位置的元素。
        Specified by:
        get在接口 List<E>
        Specified by:
        getAbstractList<E>
        参数
        index - 要返回的元素的索引
        结果
        该列表中指定位置的元素
      • size

        public abstract int size​()
        说明从接口Collection复制
        返回此集合中的元素数。 如果这个集合包含Integer.MAX_VALUE元素,返回Integer.MAX_VALUE
        Specified by:
        size在接口 Collection<E>
        Specified by:
        size在接口 List<E>
        Specified by:
        sizeAbstractCollection<E>
        结果
        此集合中的元素数
      • doSet

        protected abstract E doSet​(int index,
                                   E element)
        设置element在的位置的列表index

        有关可能的异常的描述,请参阅set(int, java.lang.Object)方法的文档。

        参数
        index - 设置元素的位置
        element - 将在指定位置设置的元素
        结果
        老元素在指定位置
        异常
        ClassCastException - 如果指定的元素的类型与此列表不兼容
        NullPointerException - 如果指定的参数包含一个或多个空元素
        IllegalArgumentException - 如果此元素的某些属性阻止将其添加到此列表
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= size())
      • doRemove

        protected abstract E doRemove​(int index)
        删除 index位置的 index
        参数
        index - 已删除元素的索引
        结果
        删除的元素
        异常
        IndexOutOfBoundsException - if the index is out of range (index < 0 || index >= size())