Mega Code Archive

 
Categories / Java / Collections Data Structure
 

Growable int[]

/*  * Copyright (c) 1998 - 2005 Versant Corporation  * All rights reserved. This program and the accompanying materials  * are made available under the terms of the Eclipse Public License v1.0  * which accompanies this distribution, and is available at  * http://www.eclipse.org/legal/epl-v10.html  *  * Contributors:  * Versant Corporation - initial API and implementation  */ /**  * Growable int[]. This is based com.sosnoski.util.array.IntArray from  * Sosnoski Software Solutions, Inc.  */ public final class IntArray {     private int[] buf;     private int size;     public IntArray() {         this(64);     }     public IntArray(int capacity) {         buf = new int[capacity];     }     public int size() {         return size;     }     private void ensureCapacity(int len) {         if (size + len > buf.length) {             int n = buf.length * 3 / 2 + 1;             if (size + len > n) {                 n = size + len;             }             int[] a = new int[n];             System.arraycopy(buf, 0, a, 0, size);             buf = a;         }     }     public void add(int v) {         ensureCapacity(size + 1);         buf[size++] = v;     }     /**      * Add a value at a specified index in the array.      */     public void add(int index, int value) {         ensureCapacity(size + 1);         if (index == size) {             buf[size++] = value;         } else {             System.arraycopy(buf, index, buf, index + 1, size - index);             buf[index] = value;         }     }     /**      * Constructs and returns a simple array containing the same data as held      * in this growable array.      */     public int[] toArray() {         int[] a = new int[size];         System.arraycopy(buf, 0, a, 0, size);         return a;     }     public void clear() {         size = 0;     }     /**      * Retrieve the value present at an index position in the array.      */     public int get(int index) {         return buf[index];     } }