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

📄 linkedlist.java

📁 This is a resource based on j2me embedded,if you dont understand,you can connection with me .
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * @throws IndexOutOfBoundsException if the specified index is out of     * 		  range (<tt>index &lt; 0 || index &gt;= size()</tt>).     */    public Object remove(int index) {        Entry e = entry(index);        remove(e);        return e.element;    }    /**     * Return the indexed entry.     */    private Entry entry(int index) {        if (index < 0 || index >= size)            throw new IndexOutOfBoundsException("Index: "+index+                                                ", Size: "+size);        Entry e = header;        if (index < (size >> 1)) {            for (int i = 0; i <= index; i++)                e = e.next;        } else {            for (int i = size; i > index; i--)                e = e.previous;        }        return e;    }    // Search Operations    /**     * Returns the index in this list of the first occurrence of the     * specified element, or -1 if the List does not contain this     * element.  More formally, returns the lowest index i such that     * <tt>(o==null ? get(i)==null : o.equals(get(i)))</tt>, or -1 if     * there is no such index.     *     * @param o element to search for.     * @return the index in this list of the first occurrence of the     * 	       specified element, or -1 if the list does not contain this     * 	       element.     */    public int indexOf(Object o) {        int index = 0;        if (o==null) {            for (Entry e = header.next; e != header; e = e.next) {                if (e.element==null)                    return index;                index++;            }        } else {            for (Entry e = header.next; e != header; e = e.next) {                if (o.equals(e.element))                    return index;                index++;            }        }        return -1;    }    /**     * Returns the index in this list of the last occurrence of the     * specified element, or -1 if the list does not contain this     * element.  More formally, returns the highest index i such that     * <tt>(o==null ? get(i)==null : o.equals(get(i)))</tt>, or -1 if     * there is no such index.     *     * @param o element to search for.     * @return the index in this list of the last occurrence of the     * 	       specified element, or -1 if the list does not contain this     * 	       element.     */    public int lastIndexOf(Object o) {        int index = size;        if (o==null) {            for (Entry e = header.previous; e != header; e = e.previous) {                index--;                if (e.element==null)                    return index;            }        } else {            for (Entry e = header.previous; e != header; e = e.previous) {                index--;                if (o.equals(e.element))                    return index;            }        }        return -1;    }    /**     * Returns a list-iterator of the elements in this list (in proper     * sequence), starting at the specified position in the list.     * Obeys the general contract of <tt>List.listIterator(int)</tt>.<p>     *     * The list-iterator is <i>fail-fast</i>: if the list is structurally     * modified at any time after the Iterator is created, in any way except     * through the list-iterator's own <tt>remove</tt> or <tt>add</tt>     * methods, the list-iterator will throw a     * <tt>ConcurrentModificationException</tt>.  Thus, in the face of     * concurrent modification, the iterator fails quickly and cleanly, rather     * than risking arbitrary, non-deterministic behavior at an undetermined     * time in the future.     *     * @param index index of first element to be returned from the     *		    list-iterator (by a call to <tt>next</tt>).     * @return a ListIterator of the elements in this list (in proper     * 	       sequence), starting at the specified position in the list.     * @throws    IndexOutOfBoundsException if index is out of range     *		  (<tt>index &lt; 0 || index &gt; size()</tt>).     * @see List#listIterator(int)     */    public ListIterator listIterator(int index) {	return new ListItr(index);    }    private class ListItr implements ListIterator {	private Entry lastReturned = header;	private Entry next;	private int nextIndex;	private int expectedModCount = modCount;	ListItr(int index) {	    if (index < 0 || index > size)		throw new IndexOutOfBoundsException("Index: "+index+						    ", Size: "+size);	    if (index < (size >> 1)) {		next = header.next;		for (nextIndex=0; nextIndex<index; nextIndex++)		    next = next.next;	    } else {		next = header;		for (nextIndex=size; nextIndex>index; nextIndex--)		    next = next.previous;	    }	}	public boolean hasNext() {	    return nextIndex != size;	}	public Object next() {	    checkForComodification();	    if (nextIndex == size)		throw new NoSuchElementException();	    lastReturned = next;	    next = next.next;	    nextIndex++;	    return lastReturned.element;	}	public boolean hasPrevious() {	    return nextIndex != 0;	}	public Object previous() {	    if (nextIndex == 0)		throw new NoSuchElementException();	    lastReturned = next = next.previous;	    nextIndex--;	    checkForComodification();	    return lastReturned.element;	}	public int nextIndex() {	    return nextIndex;	}	public int previousIndex() {	    return nextIndex-1;	}	public void remove() {            checkForComodification();            try {                LinkedList.this.remove(lastReturned);            } catch (NoSuchElementException e) {                throw new IllegalStateException();            }	    if (next==lastReturned)                next = lastReturned.next;            else		nextIndex--;	    lastReturned = header;	    expectedModCount++;	}	public void set(Object o) {	    if (lastReturned == header)		throw new IllegalStateException();	    checkForComodification();	    lastReturned.element = o;	}	public void add(Object o) {	    checkForComodification();	    lastReturned = header;	    addBefore(o, next);	    nextIndex++;	    expectedModCount++;	}	final void checkForComodification() {	    if (modCount != expectedModCount)		throw new ConcurrentModificationException();	}    }    private static class Entry {	Object element;	Entry next;	Entry previous;	Entry(Object element, Entry next, Entry previous) {	    this.element = element;	    this.next = next;	    this.previous = previous;	}    }    private Entry addBefore(Object o, Entry e) {	Entry newEntry = new Entry(o, e, e.previous);	newEntry.previous.next = newEntry;	newEntry.next.previous = newEntry;	size++;	modCount++;	return newEntry;    }    private void remove(Entry e) {	if (e == header)	    throw new NoSuchElementException();	e.previous.next = e.next;	e.next.previous = e.previous;	size--;	modCount++;    }    /**     * Returns a shallow copy of this <tt>LinkedList</tt>. (The elements     * themselves are not cloned.)     *     * @return a shallow copy of this <tt>LinkedList</tt> instance.     */    public Object clone() {        LinkedList clone = null;	try { 	    clone = (LinkedList)super.clone();	} catch (CloneNotSupportedException e) { 	    throw new InternalError();	}        // Put clone into "virgin" state        clone.header = new Entry(null, null, null);        clone.header.next = clone.header.previous = clone.header;        clone.size = 0;        clone.modCount = 0;        // Initialize clone with our elements        for (Entry e = header.next; e != header; e = e.next)            clone.add(e.element);        return clone;    }    /**     * Returns an array containing all of the elements in this list     * in the correct order.     *     * @return an array containing all of the elements in this list     * 	       in the correct order.     */    public Object[] toArray() {	Object[] result = new Object[size];        int i = 0;        for (Entry e = header.next; e != header; e = e.next)            result[i++] = e.element;	return result;    }    /**     * Returns an array containing all of the elements in this list in     * the correct order; the runtime type of the returned array is that of     * the specified array.  If the list fits in the specified array, it     * is returned therein.  Otherwise, a new array is allocated with the     * runtime type of the specified array and the size of this list.<p>     *     * If the list fits in the specified array with room to spare     * (i.e., the array has more elements than the list),     * the element in the array immediately following the end of the     * collection is set to null.  This is useful in determining the length     * of the list <i>only</i> if the caller knows that the list     * does not contain any null elements.     *     * @param a the array into which the elements of the list are to     *		be stored, if it is big enough; otherwise, a new array of the     * 		same runtime type is allocated for this purpose.     * @return an array containing the elements of the list.     * @throws ArrayStoreException if the runtime type of a is not a     *         supertype of the runtime type of every element in this list.     * @throws NullPointerException if the specified array is null.     */    public Object[] toArray(Object a[]) {        if (a.length < size)            a = (Object[])java.lang.reflect.Array.newInstance(                                a.getClass().getComponentType(), size);        int i = 0;        for (Entry e = header.next; e != header; e = e.next)            a[i++] = e.element;        if (a.length > size)            a[size] = null;        return a;    }    private static final long serialVersionUID = 876323262645176354L;    /**     * Save the state of this <tt>LinkedList</tt> instance to a stream (that     * is, serialize it).     *     * @serialData The size of the list (the number of elements it     *		   contains) is emitted (int), followed by all of its     * elements (each an Object) in the proper order.       */    private void writeObject(java.io.ObjectOutputStream s)        throws java.io.IOException {	// Write out any hidden serialization magic	s.defaultWriteObject();        // Write out size        s.writeInt(size);	// Write out all elements in the proper order.        for (Entry e = header.next; e != header; e = e.next)            s.writeObject(e.element);    }    /**     * Reconstitute this <tt>LinkedList</tt> instance from a stream (that is     * deserialize it).     */    private void readObject(java.io.ObjectInputStream s)        throws java.io.IOException, ClassNotFoundException {	// Read in any hidden serialization magic	s.defaultReadObject();        // Read in size        int size = s.readInt();        // Initialize header        header = new Entry(null, null, null);        header.next = header.previous = header;	// Read in all elements in the proper order.	for (int i=0; i<size; i++)            add(s.readObject());    }}

⌨️ 快捷键说明

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