Mega Code Archive

 
Categories / Java / Collections Data Structure
 

Fast stack

//package com.thoughtworks.xstream.core.util; public final class FastStack {     private Object[] stack;     private int pointer;     public FastStack(int initialCapacity) {         stack = new Object[initialCapacity];     }     public Object push(Object value) {         if (pointer + 1 >= stack.length) {             resizeStack(stack.length * 2);         }         stack[pointer++] = value;         return value;     }     public void popSilently() {         stack[--pointer] = null;     }     public Object pop() {         final Object result = stack[--pointer];          stack[pointer] = null;          return result;     }     public Object peek() {         return pointer == 0 ? null : stack[pointer - 1];     }     public int size() {         return pointer;     }     public boolean hasStuff() {         return pointer > 0;     }     public Object get(int i) {         return stack[i];     }     private void resizeStack(int newCapacity) {         Object[] newStack = new Object[newCapacity];         System.arraycopy(stack, 0, newStack, 0, Math.min(pointer, newCapacity));         stack = newStack;     }     public String toString() {         StringBuffer result = new StringBuffer("[");         for (int i = 0; i < pointer; i++) {             if (i > 0) {                 result.append(", ");             }             result.append(stack[i]);         }         result.append(']');         return result.toString();     } }