FileDocCategorySizeDatePackage
LongArray.javaAPI DocGlassfish v2 API8430Fri May 04 22:32:10 BST 2007package com.sun.enterprise.util.collection

LongArray

public class LongArray extends Object

Fields Summary
long[]
data
int
size
double
growFactor
Constructors Summary
public LongArray()

		this(6, 0.5);
	
public LongArray(int initialCapacity)

		this(initialCapacity, 0.5);
	
public LongArray(int initialCapacity, double growFactor)

		data = new long[initialCapacity];
		this.growFactor = growFactor;
	
Methods Summary
public voidadd(int index, long val)

		if (size == data.length) {
			makeRoom(1);
		}

		System.arraycopy(data, index, data, index+1, size - index);
		data[index] = val;
		size++;

	
public booleanadd(long val)

		if (size == data.length) {
			makeRoom(1);
		}

		data[size++] = val;
		return true;
	
public booleanaddAll(com.sun.enterprise.util.collection.LongArray coll)

		int collSize = coll.size();
		makeRoom(collSize);
		LongIterator longIter = coll.longIterator();
		while (longIter.hasNext()) {
			data[size++] = longIter.nextLong();
		}
		return (collSize > 0);
	
public booleanaddAll(int index, com.sun.enterprise.util.collection.LongArray coll)

		int collSize = coll.size();
		makeRoom(collSize);
		System.arraycopy(data, index, data, index+collSize, size - index);
		LongIterator longIter = coll.longIterator();
		while (longIter.hasNext()) {
			data[index++] = longIter.nextLong();
		}
		size += collSize;
		return (collSize > 0);
	
public voidclear()

		size = 0;
		data = new long[6];
	
public booleancontains(long val)

		return (indexOf(val) >= 0);
	
public booleancontainsAll(com.sun.enterprise.util.collection.LongArray coll)

		LongIterator iter = coll.longIterator();
		while (iter.hasNext()) {
			if (contains(iter.nextLong()) == false) {
				return false;
			}
		}
		return true;
	
public booleancontainsAll(long[] array)

		for (int i=array.length; i > 0; ) {
			if (contains(array[--i]) == false) {
				return false;
			}
		}
		return true;
	
public booleanequals(java.lang.Object o)

		//For now do this way. Fix it later
		return this == o;
	
public longget(int index)

		return data[index];
	
public inthashCode()

		long hashCode = 1;
		for (int i=0; i<size; i++) {
			hashCode = 31*hashCode + data[i];
		}
		return (int) hashCode;
	
public intindexOf(long val)

		for (int i=0; i<size; i++) {
			if (data[i] == val) {
				return i;
			}
		}
		return -1;
	
public booleanisEmpty()

		return size == 0;
	
public java.util.Iteratoriterator()

		return new LongIterator(0);
	
public intlastIndexOf(long val)

		for (int i=size-1; i >= 0; i--) {
			if (data[i] == val) {
				return i;
			}
		}
		return -1;
	
public java.util.ListIteratorlistIterator()

		return new LongIterator(0);
	
public java.util.ListIteratorlistIterator(int index)

		return new LongIterator(index);
	
public com.sun.enterprise.util.collection.LongArray$LongIteratorlongIterator()

		return new LongIterator(0);
	
public static voidmain(java.lang.String[] args)

		int count = 1000000;

		ArrayList al = new ArrayList(count);
		LongArray la = new LongArray(count, 0.1);
		LongArrayList lal = new LongArrayList(count, 0.1);

		long t1, t2;

		t1 = System.currentTimeMillis();
		for (int i = 0; i < count; i++) {
                     al.add(Long.valueOf(i));
                 }
		t2 = System.currentTimeMillis();
		System.out.println("ArrayList took: " + ((t2 - t1) / 1000.0) + " sec.");
		al.clear();

		t1 = System.currentTimeMillis();
		for (int i=0; i<count; i++) {
			la.add(i);
		}
		t2 = System.currentTimeMillis();
		System.out.println("LongArray took: " + ((t2 - t1) / 1000.0) + " sec.");
		la.printStat();
		la.clear();

		t1 = System.currentTimeMillis();
		for (int i=0; i<count; i++) {
			lal.add(i);
		}
		t2 = System.currentTimeMillis();
		System.out.println("LongArrayList took: " + ((t2 - t1) / 1000.0) + " sec.");
		lal.clear();

		for (int i=0; i<count; i++) {
			la.add(i);
		}

		for (int i=0; i<10; i++) {
			for (int j=0; j<count; j++) {
				if (la.get(j) != j) {
					System.out.println("data["+j+"]: " + la.get(j));
				}
			}
		}
	
protected voidmakeRoom(int space)


		if (space + size >= data.length) {
			long[]	oldData = data;

			int newSize = size + space + ((int) (size * growFactor)) + 1;
			data = new long[newSize];
	
			System.arraycopy(oldData, 0, data, 0, oldData.length);
		}
	
public voidprint()

		System.out.print("Data (size: " + size + "): ");
		for (int i=0; i<size; i++) {
			System.out.print(" " + data[i]);
		}
		System.out.println();
	
public voidprintStat()

		System.out.println("Size: " + size);
		System.out.println("Length: " + data.length);
	
public longremove(int index)

		long val = data[index];
		if (index < size - 1) {
			System.arraycopy(data, index+1, data, index, size - index);
		}
		size--;
		return val;
	
public booleanremove(long val)

		for (int i=0; i<size; i++) {
			if (data[i] == val) {
				if (i < size - 1) {
					System.arraycopy(data, i+1, data, i, size - i);
					size--;
					return true;
				}
			}
		}
		return false;
	
public booleanremoveAll(com.sun.enterprise.util.collection.LongArray coll)

		boolean	removed = false;
		LongIterator iter = coll.longIterator();
		while (iter.hasNext()) {
			if (remove(iter.nextLong()) == true) {
				removed = true;
			}
		}
		return removed;
	
public booleanremoveAll(long[] array)

		boolean	removed = false;
		for (int i=0; i<array.length; i++) {
			if (remove(array[i]) == true) {
				removed = true;
			}
		}
		return removed;
	
public booleanretainAll(com.sun.enterprise.util.collection.LongArray coll)

		return false;
	
public booleanretainAll(long[] array)

		return false;
	
public java.lang.Objectset(int index, java.lang.Object o)

		long oldVal = data[index];
		data[index] = ((Long) o).longValue();
		return Long.valueOf(oldVal);
	
public longset(int index, long val)

		long oldVal = data[index];
		data[index] = val;
		return oldVal;
	
public intsize()

		return size;
	
public long[]toArray()

		return data;