mev-4.0.01/source/org/tigr/microarray/mev/cluster/algorithm/impl/util/FloatArray.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: FloatArray.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 FloatArray {
2 26 Feb 07 jari 15
2 26 Feb 07 jari 16     private float[] elementData;
2 26 Feb 07 jari 17     private int size;
2 26 Feb 07 jari 18
2 26 Feb 07 jari 19     public FloatArray() {
2 26 Feb 07 jari 20         this(10);
2 26 Feb 07 jari 21     }
2 26 Feb 07 jari 22     /**
2 26 Feb 07 jari 23      * Constructs an empty array with the specified initial capacity.
2 26 Feb 07 jari 24      */
2 26 Feb 07 jari 25     public FloatArray(int initialCapacity) {
2 26 Feb 07 jari 26         this.elementData = new float[initialCapacity];
2 26 Feb 07 jari 27     }
2 26 Feb 07 jari 28
2 26 Feb 07 jari 29     /**
2 26 Feb 07 jari 30      * Returns an array containing all of the floats in this container
2 26 Feb 07 jari 31      * in the correct order.
2 26 Feb 07 jari 32      */
2 26 Feb 07 jari 33     public float[] toArray() {
2 26 Feb 07 jari 34         float[] result = new float[size];
2 26 Feb 07 jari 35         System.arraycopy(elementData, 0, result, 0, size);
2 26 Feb 07 jari 36         return result;
2 26 Feb 07 jari 37     }
2 26 Feb 07 jari 38
2 26 Feb 07 jari 39     /**
2 26 Feb 07 jari 40      * Returns the float value at the specified position in this container.
2 26 Feb 07 jari 41      */
2 26 Feb 07 jari 42     public float get(int index) {
2 26 Feb 07 jari 43         RangeCheck(index);
2 26 Feb 07 jari 44         return elementData[index];
2 26 Feb 07 jari 45     }
2 26 Feb 07 jari 46
2 26 Feb 07 jari 47     /**
2 26 Feb 07 jari 48      * Replaces the float value at the specified position in this container with
2 26 Feb 07 jari 49      * the specified one.
2 26 Feb 07 jari 50      */
2 26 Feb 07 jari 51     public void set(int index, float value) {
2 26 Feb 07 jari 52         RangeCheck(index);
2 26 Feb 07 jari 53         elementData[index] = value;
2 26 Feb 07 jari 54     }
2 26 Feb 07 jari 55
2 26 Feb 07 jari 56     /**
2 26 Feb 07 jari 57      * Appends the specified value to the end of this container.
2 26 Feb 07 jari 58      */
2 26 Feb 07 jari 59     public boolean add(float i) {
2 26 Feb 07 jari 60         ensureCapacity(size + 1);
2 26 Feb 07 jari 61         elementData[size++] = i;
2 26 Feb 07 jari 62         return true;
2 26 Feb 07 jari 63     }
2 26 Feb 07 jari 64
2 26 Feb 07 jari 65     public void clear() {
2 26 Feb 07 jari 66         size = 0;
2 26 Feb 07 jari 67     }
2 26 Feb 07 jari 68
2 26 Feb 07 jari 69     /**
2 26 Feb 07 jari 70      * Check if the given index is in range. If not, throw an appropriate
2 26 Feb 07 jari 71      * runtime exception.
2 26 Feb 07 jari 72      */
2 26 Feb 07 jari 73     private void RangeCheck(int index) {
2 26 Feb 07 jari 74         if (index >= size || index < 0)
2 26 Feb 07 jari 75             throw new IndexOutOfBoundsException("Index: "+index+", Size: "+size);
2 26 Feb 07 jari 76     }
2 26 Feb 07 jari 77
2 26 Feb 07 jari 78     /**
2 26 Feb 07 jari 79      * Increases the capacity of this <tt>FloatArray</tt> instance, if
2 26 Feb 07 jari 80      * necessary, to ensure that it can hold at least the number of floats
2 26 Feb 07 jari 81      * specified by the minimum capacity argument.
2 26 Feb 07 jari 82      *
2 26 Feb 07 jari 83      * @param minCapacity the desired minimum capacity.
2 26 Feb 07 jari 84      */
2 26 Feb 07 jari 85     private void ensureCapacity(int minCapacity) {
2 26 Feb 07 jari 86         int oldCapacity = elementData.length;
2 26 Feb 07 jari 87         if (minCapacity > oldCapacity) {
2 26 Feb 07 jari 88             float[] oldData = elementData;
2 26 Feb 07 jari 89             int newCapacity = (oldCapacity * 3)/2 + 1;
2 26 Feb 07 jari 90             if (newCapacity < minCapacity)
2 26 Feb 07 jari 91                 newCapacity = minCapacity;
2 26 Feb 07 jari 92             elementData = new float[newCapacity];
2 26 Feb 07 jari 93             System.arraycopy(oldData, 0, elementData, 0, size);
2 26 Feb 07 jari 94         }
2 26 Feb 07 jari 95     }
2 26 Feb 07 jari 96
2 26 Feb 07 jari 97 }