home *** CD-ROM | disk | FTP | other *** search
- package java.util;
-
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.Serializable;
- import java.lang.reflect.Array;
-
- public class ArrayList extends AbstractList implements List, Cloneable, Serializable {
- private transient Object[] elementData;
- private int size;
-
- public ArrayList(int var1) {
- if (var1 < 0) {
- throw new IllegalArgumentException("Illegal Capacity: " + var1);
- } else {
- this.elementData = new Object[var1];
- }
- }
-
- public ArrayList() {
- this(10);
- }
-
- public ArrayList(Collection var1) {
- this.size = var1.size();
- this.elementData = new Object[this.size * 110 / 100];
- var1.toArray(this.elementData);
- }
-
- public void trimToSize() {
- ++super.modCount;
- int var1 = this.elementData.length;
- if (this.size < var1) {
- Object[] var2 = this.elementData;
- this.elementData = new Object[this.size];
- System.arraycopy(var2, 0, this.elementData, 0, this.size);
- }
-
- }
-
- public void ensureCapacity(int var1) {
- ++super.modCount;
- int var2 = this.elementData.length;
- if (var1 > var2) {
- Object[] var3 = this.elementData;
- int var4 = var2 * 3 / 2 + 1;
- if (var4 < var1) {
- var4 = var1;
- }
-
- this.elementData = new Object[var4];
- System.arraycopy(var3, 0, this.elementData, 0, this.size);
- }
-
- }
-
- public int size() {
- return this.size;
- }
-
- public boolean isEmpty() {
- return this.size == 0;
- }
-
- public boolean contains(Object var1) {
- return this.indexOf(var1) >= 0;
- }
-
- public int indexOf(Object var1) {
- if (var1 == null) {
- for(int var2 = 0; var2 < this.size; ++var2) {
- if (this.elementData[var2] == null) {
- return var2;
- }
- }
- } else {
- for(int var3 = 0; var3 < this.size; ++var3) {
- if (var1.equals(this.elementData[var3])) {
- return var3;
- }
- }
- }
-
- return -1;
- }
-
- public int lastIndexOf(Object var1) {
- if (var1 == null) {
- for(int var2 = this.size - 1; var2 >= 0; --var2) {
- if (this.elementData[var2] == null) {
- return var2;
- }
- }
- } else {
- for(int var3 = this.size - 1; var3 >= 0; --var3) {
- if (var1.equals(this.elementData[var3])) {
- return var3;
- }
- }
- }
-
- return -1;
- }
-
- public Object clone() {
- try {
- ArrayList var1 = (ArrayList)super.clone();
- var1.elementData = new Object[this.size];
- System.arraycopy(this.elementData, 0, var1.elementData, 0, this.size);
- var1.modCount = 0;
- return var1;
- } catch (CloneNotSupportedException var2) {
- throw new InternalError();
- }
- }
-
- public Object[] toArray() {
- Object[] var1 = new Object[this.size];
- System.arraycopy(this.elementData, 0, var1, 0, this.size);
- return var1;
- }
-
- public Object[] toArray(Object[] var1) {
- if (var1.length < this.size) {
- var1 = Array.newInstance(var1.getClass().getComponentType(), this.size);
- }
-
- System.arraycopy(this.elementData, 0, var1, 0, this.size);
- if (var1.length > this.size) {
- var1[this.size] = null;
- }
-
- return var1;
- }
-
- public Object get(int var1) {
- this.RangeCheck(var1);
- return this.elementData[var1];
- }
-
- public Object set(int var1, Object var2) {
- this.RangeCheck(var1);
- Object var3 = this.elementData[var1];
- this.elementData[var1] = var2;
- return var3;
- }
-
- public boolean add(Object var1) {
- this.ensureCapacity(this.size + 1);
- this.elementData[this.size++] = var1;
- return true;
- }
-
- public void add(int var1, Object var2) {
- if (var1 <= this.size && var1 >= 0) {
- this.ensureCapacity(this.size + 1);
- System.arraycopy(this.elementData, var1, this.elementData, var1 + 1, this.size - var1);
- this.elementData[var1] = var2;
- ++this.size;
- } else {
- throw new IndexOutOfBoundsException("Index: " + var1 + ", Size: " + this.size);
- }
- }
-
- public Object remove(int var1) {
- this.RangeCheck(var1);
- ++super.modCount;
- Object var2 = this.elementData[var1];
- int var3 = this.size - var1 - 1;
- if (var3 > 0) {
- System.arraycopy(this.elementData, var1 + 1, this.elementData, var1, var3);
- }
-
- this.elementData[--this.size] = null;
- return var2;
- }
-
- public void clear() {
- ++super.modCount;
-
- for(int var1 = 0; var1 < this.size; ++var1) {
- this.elementData[var1] = null;
- }
-
- this.size = 0;
- }
-
- public boolean addAll(Collection var1) {
- ++super.modCount;
- int var2 = var1.size();
- this.ensureCapacity(this.size + var2);
- Iterator var3 = var1.iterator();
-
- for(int var4 = 0; var4 < var2; ++var4) {
- this.elementData[this.size++] = var3.next();
- }
-
- return var2 != 0;
- }
-
- public boolean addAll(int var1, Collection var2) {
- if (var1 <= this.size && var1 >= 0) {
- int var3 = var2.size();
- this.ensureCapacity(this.size + var3);
- int var4 = this.size - var1;
- if (var4 > 0) {
- System.arraycopy(this.elementData, var1, this.elementData, var1 + var3, var4);
- }
-
- Iterator var5 = var2.iterator();
-
- for(int var6 = 0; var6 < var3; ++var6) {
- this.elementData[var1++] = var5.next();
- }
-
- this.size += var3;
- return var3 != 0;
- } else {
- throw new IndexOutOfBoundsException("Index: " + var1 + ", Size: " + this.size);
- }
- }
-
- protected void removeRange(int var1, int var2) {
- ++super.modCount;
- int var3 = this.size - var2;
- System.arraycopy(this.elementData, var2, this.elementData, var1, var3);
-
- for(int var4 = this.size - (var2 - var1); this.size != var4; this.elementData[--this.size] = null) {
- }
-
- }
-
- private void RangeCheck(int var1) {
- if (var1 >= this.size || var1 < 0) {
- throw new IndexOutOfBoundsException("Index: " + var1 + ", Size: " + this.size);
- }
- }
-
- private synchronized void writeObject(ObjectOutputStream var1) throws IOException {
- var1.defaultWriteObject();
- var1.writeInt(this.elementData.length);
-
- for(int var2 = 0; var2 < this.size; ++var2) {
- var1.writeObject(this.elementData[var2]);
- }
-
- }
-
- private synchronized void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
- var1.defaultReadObject();
- int var2 = var1.readInt();
- this.elementData = new Object[var2];
-
- for(int var3 = 0; var3 < this.size; ++var3) {
- this.elementData[var3] = var1.readObject();
- }
-
- }
- }
-