home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / util / ArrayList.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.0 KB  |  261 lines

  1. package java.util;
  2.  
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6. import java.io.Serializable;
  7. import java.lang.reflect.Array;
  8.  
  9. public class ArrayList extends AbstractList implements List, Cloneable, Serializable {
  10.    private transient Object[] elementData;
  11.    private int size;
  12.  
  13.    public ArrayList(int var1) {
  14.       if (var1 < 0) {
  15.          throw new IllegalArgumentException("Illegal Capacity: " + var1);
  16.       } else {
  17.          this.elementData = new Object[var1];
  18.       }
  19.    }
  20.  
  21.    public ArrayList() {
  22.       this(10);
  23.    }
  24.  
  25.    public ArrayList(Collection var1) {
  26.       this.size = var1.size();
  27.       this.elementData = new Object[this.size * 110 / 100];
  28.       var1.toArray(this.elementData);
  29.    }
  30.  
  31.    public void trimToSize() {
  32.       ++super.modCount;
  33.       int var1 = this.elementData.length;
  34.       if (this.size < var1) {
  35.          Object[] var2 = this.elementData;
  36.          this.elementData = new Object[this.size];
  37.          System.arraycopy(var2, 0, this.elementData, 0, this.size);
  38.       }
  39.  
  40.    }
  41.  
  42.    public void ensureCapacity(int var1) {
  43.       ++super.modCount;
  44.       int var2 = this.elementData.length;
  45.       if (var1 > var2) {
  46.          Object[] var3 = this.elementData;
  47.          int var4 = var2 * 3 / 2 + 1;
  48.          if (var4 < var1) {
  49.             var4 = var1;
  50.          }
  51.  
  52.          this.elementData = new Object[var4];
  53.          System.arraycopy(var3, 0, this.elementData, 0, this.size);
  54.       }
  55.  
  56.    }
  57.  
  58.    public int size() {
  59.       return this.size;
  60.    }
  61.  
  62.    public boolean isEmpty() {
  63.       return this.size == 0;
  64.    }
  65.  
  66.    public boolean contains(Object var1) {
  67.       return this.indexOf(var1) >= 0;
  68.    }
  69.  
  70.    public int indexOf(Object var1) {
  71.       if (var1 == null) {
  72.          for(int var2 = 0; var2 < this.size; ++var2) {
  73.             if (this.elementData[var2] == null) {
  74.                return var2;
  75.             }
  76.          }
  77.       } else {
  78.          for(int var3 = 0; var3 < this.size; ++var3) {
  79.             if (var1.equals(this.elementData[var3])) {
  80.                return var3;
  81.             }
  82.          }
  83.       }
  84.  
  85.       return -1;
  86.    }
  87.  
  88.    public int lastIndexOf(Object var1) {
  89.       if (var1 == null) {
  90.          for(int var2 = this.size - 1; var2 >= 0; --var2) {
  91.             if (this.elementData[var2] == null) {
  92.                return var2;
  93.             }
  94.          }
  95.       } else {
  96.          for(int var3 = this.size - 1; var3 >= 0; --var3) {
  97.             if (var1.equals(this.elementData[var3])) {
  98.                return var3;
  99.             }
  100.          }
  101.       }
  102.  
  103.       return -1;
  104.    }
  105.  
  106.    public Object clone() {
  107.       try {
  108.          ArrayList var1 = (ArrayList)super.clone();
  109.          var1.elementData = new Object[this.size];
  110.          System.arraycopy(this.elementData, 0, var1.elementData, 0, this.size);
  111.          var1.modCount = 0;
  112.          return var1;
  113.       } catch (CloneNotSupportedException var2) {
  114.          throw new InternalError();
  115.       }
  116.    }
  117.  
  118.    public Object[] toArray() {
  119.       Object[] var1 = new Object[this.size];
  120.       System.arraycopy(this.elementData, 0, var1, 0, this.size);
  121.       return var1;
  122.    }
  123.  
  124.    public Object[] toArray(Object[] var1) {
  125.       if (var1.length < this.size) {
  126.          var1 = Array.newInstance(var1.getClass().getComponentType(), this.size);
  127.       }
  128.  
  129.       System.arraycopy(this.elementData, 0, var1, 0, this.size);
  130.       if (var1.length > this.size) {
  131.          var1[this.size] = null;
  132.       }
  133.  
  134.       return var1;
  135.    }
  136.  
  137.    public Object get(int var1) {
  138.       this.RangeCheck(var1);
  139.       return this.elementData[var1];
  140.    }
  141.  
  142.    public Object set(int var1, Object var2) {
  143.       this.RangeCheck(var1);
  144.       Object var3 = this.elementData[var1];
  145.       this.elementData[var1] = var2;
  146.       return var3;
  147.    }
  148.  
  149.    public boolean add(Object var1) {
  150.       this.ensureCapacity(this.size + 1);
  151.       this.elementData[this.size++] = var1;
  152.       return true;
  153.    }
  154.  
  155.    public void add(int var1, Object var2) {
  156.       if (var1 <= this.size && var1 >= 0) {
  157.          this.ensureCapacity(this.size + 1);
  158.          System.arraycopy(this.elementData, var1, this.elementData, var1 + 1, this.size - var1);
  159.          this.elementData[var1] = var2;
  160.          ++this.size;
  161.       } else {
  162.          throw new IndexOutOfBoundsException("Index: " + var1 + ", Size: " + this.size);
  163.       }
  164.    }
  165.  
  166.    public Object remove(int var1) {
  167.       this.RangeCheck(var1);
  168.       ++super.modCount;
  169.       Object var2 = this.elementData[var1];
  170.       int var3 = this.size - var1 - 1;
  171.       if (var3 > 0) {
  172.          System.arraycopy(this.elementData, var1 + 1, this.elementData, var1, var3);
  173.       }
  174.  
  175.       this.elementData[--this.size] = null;
  176.       return var2;
  177.    }
  178.  
  179.    public void clear() {
  180.       ++super.modCount;
  181.  
  182.       for(int var1 = 0; var1 < this.size; ++var1) {
  183.          this.elementData[var1] = null;
  184.       }
  185.  
  186.       this.size = 0;
  187.    }
  188.  
  189.    public boolean addAll(Collection var1) {
  190.       ++super.modCount;
  191.       int var2 = var1.size();
  192.       this.ensureCapacity(this.size + var2);
  193.       Iterator var3 = var1.iterator();
  194.  
  195.       for(int var4 = 0; var4 < var2; ++var4) {
  196.          this.elementData[this.size++] = var3.next();
  197.       }
  198.  
  199.       return var2 != 0;
  200.    }
  201.  
  202.    public boolean addAll(int var1, Collection var2) {
  203.       if (var1 <= this.size && var1 >= 0) {
  204.          int var3 = var2.size();
  205.          this.ensureCapacity(this.size + var3);
  206.          int var4 = this.size - var1;
  207.          if (var4 > 0) {
  208.             System.arraycopy(this.elementData, var1, this.elementData, var1 + var3, var4);
  209.          }
  210.  
  211.          Iterator var5 = var2.iterator();
  212.  
  213.          for(int var6 = 0; var6 < var3; ++var6) {
  214.             this.elementData[var1++] = var5.next();
  215.          }
  216.  
  217.          this.size += var3;
  218.          return var3 != 0;
  219.       } else {
  220.          throw new IndexOutOfBoundsException("Index: " + var1 + ", Size: " + this.size);
  221.       }
  222.    }
  223.  
  224.    protected void removeRange(int var1, int var2) {
  225.       ++super.modCount;
  226.       int var3 = this.size - var2;
  227.       System.arraycopy(this.elementData, var2, this.elementData, var1, var3);
  228.  
  229.       for(int var4 = this.size - (var2 - var1); this.size != var4; this.elementData[--this.size] = null) {
  230.       }
  231.  
  232.    }
  233.  
  234.    private void RangeCheck(int var1) {
  235.       if (var1 >= this.size || var1 < 0) {
  236.          throw new IndexOutOfBoundsException("Index: " + var1 + ", Size: " + this.size);
  237.       }
  238.    }
  239.  
  240.    private synchronized void writeObject(ObjectOutputStream var1) throws IOException {
  241.       var1.defaultWriteObject();
  242.       var1.writeInt(this.elementData.length);
  243.  
  244.       for(int var2 = 0; var2 < this.size; ++var2) {
  245.          var1.writeObject(this.elementData[var2]);
  246.       }
  247.  
  248.    }
  249.  
  250.    private synchronized void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  251.       var1.defaultReadObject();
  252.       int var2 = var1.readInt();
  253.       this.elementData = new Object[var2];
  254.  
  255.       for(int var3 = 0; var3 < this.size; ++var3) {
  256.          this.elementData[var3] = var1.readObject();
  257.       }
  258.  
  259.    }
  260. }
  261.