mev-4.0.01/source/org/tigr/microarray/mev/cluster/algorithm/impl/util/IntArray.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2003, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * $RCSfile: IntArray.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.3 $
2 26 Feb 07 jari 8  * $Date: 2005/03/10 15:45:30 $
2 26 Feb 07 jari 9  * $Author: braistedj $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev.cluster.algorithm.impl.util;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 public class IntArray {
2 26 Feb 07 jari 15
2 26 Feb 07 jari 16     private int[] elementData;
2 26 Feb 07 jari 17     private int size;
2 26 Feb 07 jari 18
2 26 Feb 07 jari 19
2 26 Feb 07 jari 20     public IntArray() {
2 26 Feb 07 jari 21         this(10);
2 26 Feb 07 jari 22     }
2 26 Feb 07 jari 23     /**
2 26 Feb 07 jari 24      * Constructs an empty array with the specified initial capacity.
2 26 Feb 07 jari 25      */
2 26 Feb 07 jari 26     public IntArray(int initialCapacity) {
2 26 Feb 07 jari 27         this.elementData = new int[initialCapacity];
2 26 Feb 07 jari 28     }
2 26 Feb 07 jari 29
2 26 Feb 07 jari 30     /**
2 26 Feb 07 jari 31      * Returns an array containing all of the ints in this container
2 26 Feb 07 jari 32      * in the correct order.
2 26 Feb 07 jari 33      */
2 26 Feb 07 jari 34     public int[] toArray() {
2 26 Feb 07 jari 35         int[] result = new int[size];
2 26 Feb 07 jari 36         System.arraycopy(elementData, 0, result, 0, size);
2 26 Feb 07 jari 37         return result;
2 26 Feb 07 jari 38     }
2 26 Feb 07 jari 39
2 26 Feb 07 jari 40     /**
2 26 Feb 07 jari 41      * Returns the int value at the specified position in this container.
2 26 Feb 07 jari 42      */
2 26 Feb 07 jari 43     public int get(int index) {
2 26 Feb 07 jari 44         RangeCheck(index);
2 26 Feb 07 jari 45         return elementData[index];
2 26 Feb 07 jari 46     }
2 26 Feb 07 jari 47
2 26 Feb 07 jari 48     /**
2 26 Feb 07 jari 49      * Replaces the int value at the specified position in this container with
2 26 Feb 07 jari 50      * the specified one.
2 26 Feb 07 jari 51      */
2 26 Feb 07 jari 52     public void set(int index, int value) {
2 26 Feb 07 jari 53         RangeCheck(index);
2 26 Feb 07 jari 54         elementData[index] = value;
2 26 Feb 07 jari 55     }
2 26 Feb 07 jari 56
2 26 Feb 07 jari 57     /**
2 26 Feb 07 jari 58      * Appends the specified value to the end of this container.
2 26 Feb 07 jari 59      */
2 26 Feb 07 jari 60     public boolean add(int i) {
2 26 Feb 07 jari 61         ensureCapacity(size + 1);
2 26 Feb 07 jari 62         elementData[size++] = i;
2 26 Feb 07 jari 63         return true;
2 26 Feb 07 jari 64     }
2 26 Feb 07 jari 65
2 26 Feb 07 jari 66     public void clear() {
2 26 Feb 07 jari 67         size = 0;
2 26 Feb 07 jari 68     }
2 26 Feb 07 jari 69
2 26 Feb 07 jari 70     public int getSize() {
2 26 Feb 07 jari 71         return size;
2 26 Feb 07 jari 72     }
2 26 Feb 07 jari 73
2 26 Feb 07 jari 74     /**
2 26 Feb 07 jari 75      * Check if the given index is in range. If not, throw an appropriate
2 26 Feb 07 jari 76      * runtime exception.
2 26 Feb 07 jari 77      */
2 26 Feb 07 jari 78     private void RangeCheck(int index) {
2 26 Feb 07 jari 79         if (index >= size || index < 0)
2 26 Feb 07 jari 80             throw new IndexOutOfBoundsException("Index: "+index+", Size: "+size);
2 26 Feb 07 jari 81     }
2 26 Feb 07 jari 82
2 26 Feb 07 jari 83     /**
2 26 Feb 07 jari 84      * Increases the capacity of this <tt>IntArray</tt> instance, if
2 26 Feb 07 jari 85      * necessary, to ensure that it can hold at least the number of integers
2 26 Feb 07 jari 86      * specified by the minimum capacity argument. 
2 26 Feb 07 jari 87      *
2 26 Feb 07 jari 88      * @param minCapacity the desired minimum capacity.
2 26 Feb 07 jari 89      */
2 26 Feb 07 jari 90     private void ensureCapacity(int minCapacity) {
2 26 Feb 07 jari 91         int oldCapacity = elementData.length;
2 26 Feb 07 jari 92         if (minCapacity > oldCapacity) {
2 26 Feb 07 jari 93             int[] oldData = elementData;
2 26 Feb 07 jari 94             int newCapacity = (oldCapacity * 3)/2 + 1;
2 26 Feb 07 jari 95             if (newCapacity < minCapacity)
2 26 Feb 07 jari 96                 newCapacity = minCapacity;
2 26 Feb 07 jari 97             elementData = new int[newCapacity];
2 26 Feb 07 jari 98             System.arraycopy(oldData, 0, elementData, 0, size);
2 26 Feb 07 jari 99         }
2 26 Feb 07 jari 100     }
2 26 Feb 07 jari 101
2 26 Feb 07 jari 102 }