⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 contentlist.java

📁 openlogic-jdom-1.1-all-src-1.zip 可以用于操作xml文件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
     *     * @param collection The collection to use.     */    void clearAndSet(Collection collection) {        Content[] old = elementData;        int oldSize = size;        elementData = null;        size = 0;        if ((collection != null) && (collection.size() != 0)) {            ensureCapacity(collection.size());            try {                addAll(0, collection);            }            catch (RuntimeException exception) {                elementData = old;                size = oldSize;                throw exception;            }        }        if (old != null) {            for (int i = 0; i < oldSize; i++) {                removeParent(old[i]);            }        }        modCount++;    }    /**     * Increases the capacity of this <code>ContentList</code> instance,     * if necessary, to ensure that it can hold at least the number of     * items specified by the minimum capacity argument.     *     * @param minCapacity the desired minimum capacity.     */    void ensureCapacity(int minCapacity) {        if( elementData==null ) {            elementData = new Content[Math.max(minCapacity, INITIAL_ARRAY_SIZE)];        } else {            int oldCapacity = elementData.length;            if (minCapacity > oldCapacity) {                Object oldData[] = elementData;                int newCapacity = (oldCapacity * 3)/2 + 1;                if (newCapacity < minCapacity)                    newCapacity = minCapacity;                elementData = new Content[newCapacity];                System.arraycopy(oldData, 0, elementData, 0, size);            }        }    }    /**     * Return the object at the specified offset.     *     * @param index The offset of the object.     * @return The Object which was returned.     */    public Object get(int index) {        if (index<0 || index>=size) {            throw new IndexOutOfBoundsException("Index: " + index +                                                " Size: " + size());        }        return elementData[index];    }    /**     * Return a view of this list based on the given filter.     *     * @param filter <code>Filter</code> for this view.     * @return a list representing the rules of the <code>Filter</code>.     */    List getView(Filter filter) {        return new FilterList(filter);    }    /**     * Return the index of the first Element in the list.  If the parent     * is a <code>Document</code> then the element is the root element.     * If the list contains no Elements, it returns -1.     *     * @return index of first element, or -1 if one doesn't exist     */    int indexOfFirstElement() {        if( elementData!=null ) {            for (int i = 0; i < size; i++) {                if (elementData[i] instanceof Element) {                    return i;                }            }        }        return -1;    }    /**     * Return the index of the DocType element in the list. If the list contains     * no DocType, it returns -1.     *     * @return                     index of the DocType, or -1 if it doesn't     *                             exist     */    int indexOfDocType() {        if (elementData != null) {            for (int i = 0; i < size; i++) {                if (elementData[i] instanceof DocType) {                    return i;                }            }        }        return -1;    }    /**     * Remove the object at the specified offset.     *     * @param index The offset of the object.     * @return The Object which was removed.     */    public Object remove(int index) {        if (index<0 || index>=size)            throw new IndexOutOfBoundsException("Index: " + index +                                                 " Size: " + size());        Content old = elementData[index];        removeParent(old);        int numMoved = size - index - 1;        if (numMoved > 0)            System.arraycopy(elementData, index+1, elementData, index,numMoved);        elementData[--size] = null; // Let gc do its work        modCount++;        return old;    }    /** Remove the parent of a Object */    private static void removeParent(Content c) {        c.setParent(null);    }    /**     * Set the object at the specified location to the supplied     * object.     *     * @param index The location to set the value to.     * @param obj The location to set the value to.     * @return The object which was replaced.     * throws IndexOutOfBoundsException if index < 0 || index >= size()     */    public Object set(int index, Object obj) {        if (index<0 || index>=size)            throw new IndexOutOfBoundsException("Index: " + index +                                                 " Size: " + size());        if ((obj instanceof Element) && (parent instanceof Document)) {            int root = indexOfFirstElement();            if ((root >= 0) && (root != index)) {                throw new IllegalAddException(                  "Cannot add a second root element, only one is allowed");            }        }        if ((obj instanceof DocType) && (parent instanceof Document)) {            int docTypeIndex = indexOfDocType();            if ((docTypeIndex >= 0) && (docTypeIndex != index)) {                throw new IllegalAddException(                        "Cannot add a second doctype, only one is allowed");            }        }        Object old = remove(index);        try {            add(index, obj);        }        catch (RuntimeException exception) {            add(index, old);            throw exception;        }        return old;    }    /**     * Return the number of items in this list     *     * @return The number of items in this list.     */    public int size() {        return size;    }    /**     * Return this list as a <code>String</code>     *     * @return The number of items in this list.     */    public String toString() {        return super.toString();    }    /** Give access of ContentList.modCount to FilterList */    private int getModCount() {        return modCount;    }    /* * * * * * * * * * * * * FilterList * * * * * * * * * * * * * * * */    /* * * * * * * * * * * * * FilterList * * * * * * * * * * * * * * * */    /**     * <code>FilterList</code> represents legal JDOM content, including content     * for <code>Document</code>s or <code>Element</code>s.     */    class FilterList extends AbstractList implements java.io.Serializable {        /** The Filter */        Filter filter;        /** Current number of items in this view */        int count = 0;        /** Expected modCount in our backing list */        int expected = -1;        // Implementation Note: Directly after size() is called, expected        //       is sync'd with ContentList.modCount and count provides        //       the true size of this view.  Before the first call to        //       size() or if the backing list is modified outside this        //       FilterList, both might contain bogus values and should        //       not be used without first calling size();        /**         * Create a new instance of the FilterList with the specified Filter.         */        FilterList(Filter filter) {            this.filter = filter;        }        /**         * Inserts the specified object at the specified position in this list.         * Shifts the object currently at that position (if any) and any         * subsequent objects to the right (adds one to their indices).         *         * @param index The location to set the value to.         * @param obj The object to insert into the list.         * throws IndexOutOfBoundsException if index < 0 || index > size()         */        public void add(int index, Object obj) {            if (filter.matches(obj)) {                int adjusted = getAdjustedIndex(index);                ContentList.this.add(adjusted, obj);                expected++;                count++;            }            else throw new IllegalAddException("Filter won't allow the " +                                obj.getClass().getName() +                                " '" + obj + "' to be added to the list");        }        /**         * Return the object at the specified offset.         *         * @param index The offset of the object.         * @return The Object which was returned.         */        public Object get(int index) {            int adjusted = getAdjustedIndex(index);            return ContentList.this.get(adjusted);        }        public Iterator iterator() {            return new FilterListIterator(filter, 0);        }        public ListIterator listIterator() {            return new FilterListIterator(filter, 0);        }        public ListIterator listIterator(int index) {            return new FilterListIterator(filter,  index);        }        /**         * Remove the object at the specified offset.         *         * @param index The offset of the object.         * @return The Object which was removed.         */        public Object remove(int index) {            int adjusted = getAdjustedIndex(index);            Object old = ContentList.this.get(adjusted);            if (filter.matches(old)) {                old = ContentList.this.remove(adjusted);                expected++;                count--;            }            else {                throw new IllegalAddException("Filter won't allow the " +                                             (old.getClass()).getName() +                                             " '" + old + "' (index " + index +                                             ") to be removed");            }            return old;        }        /**         * Set the object at the specified location to the supplied         * object.         *         * @param index The location to set the value to.         * @param obj The location to set the value to.         * @return The object which was replaced.         * throws IndexOutOfBoundsException if index < 0 || index >= size()         */        public Object set(int index, Object obj) {            Object old = null;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -