org.openstreetmap.josm.tools
Class CopyList<E>

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by java.util.AbstractList<E>
          extended by org.openstreetmap.josm.tools.CopyList<E>
All Implemented Interfaces:
java.lang.Cloneable, java.lang.Iterable<E>, java.util.Collection<E>, java.util.List<E>, java.util.RandomAccess

public final class CopyList<E>
extends java.util.AbstractList<E>
implements java.util.RandomAccess, java.lang.Cloneable

A List implementation initially based on given array, but never modifying the array directly. On the first modification, the implementation will create its own copy of the array, and after that it behaves mostly as an ArrayList.


Nested Class Summary
private  class CopyList.Itr
           
 
Field Summary
private  E[] array
           
private  boolean pristine
           
private  int size
           
 
Fields inherited from class java.util.AbstractList
modCount
 
Constructor Summary
CopyList(E[] array)
          Create a List over given array.
CopyList(E[] array, int size)
           
 
Method Summary
 boolean add(E element)
           
 void add(int index, E element)
           
private  void changeCheck()
           
 void clear()
           
 java.lang.Object clone()
          Returns another independent copy-on-write copy of this List instance.
private  void ensureCapacity(int target)
           
 E get(int index)
           
 java.util.Iterator<E> iterator()
           
private  void rangeCheck(int index)
           
 E remove(int index)
           
 E set(int index, E element)
           
 int size()
           
 
Methods inherited from class java.util.AbstractList
addAll, equals, hashCode, indexOf, lastIndexOf, listIterator, listIterator, removeRange, subList
 
Methods inherited from class java.util.AbstractCollection
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.List
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray
 

Field Detail

array

private E[] array

size

private int size

pristine

private boolean pristine
Constructor Detail

CopyList

public CopyList(E[] array)
Create a List over given array.

Parameters:
array - The initial List content. The array is never modified by the CopyList.

CopyList

public CopyList(E[] array,
                int size)
Method Detail

get

public E get(int index)
Specified by:
get in interface java.util.List<E>
Specified by:
get in class java.util.AbstractList<E>

size

public int size()
Specified by:
size in interface java.util.Collection<E>
Specified by:
size in interface java.util.List<E>
Specified by:
size in class java.util.AbstractCollection<E>

set

public E set(int index,
             E element)
Specified by:
set in interface java.util.List<E>
Overrides:
set in class java.util.AbstractList<E>

add

public void add(int index,
                E element)
Specified by:
add in interface java.util.List<E>
Overrides:
add in class java.util.AbstractList<E>

remove

public E remove(int index)
Specified by:
remove in interface java.util.List<E>
Overrides:
remove in class java.util.AbstractList<E>

add

public boolean add(E element)
Specified by:
add in interface java.util.Collection<E>
Specified by:
add in interface java.util.List<E>
Overrides:
add in class java.util.AbstractList<E>

clear

public void clear()
Specified by:
clear in interface java.util.Collection<E>
Specified by:
clear in interface java.util.List<E>
Overrides:
clear in class java.util.AbstractList<E>

clone

public java.lang.Object clone()
Returns another independent copy-on-write copy of this List instance. Neither the elements nor the backing storage are copied.

Overrides:
clone in class java.lang.Object
Returns:
a clone of this CopyList instance

rangeCheck

private void rangeCheck(int index)

changeCheck

private void changeCheck()

ensureCapacity

private void ensureCapacity(int target)

iterator

public java.util.Iterator<E> iterator()
Specified by:
iterator in interface java.lang.Iterable<E>
Specified by:
iterator in interface java.util.Collection<E>
Specified by:
iterator in interface java.util.List<E>
Overrides:
iterator in class java.util.AbstractList<E>


JOSM