Custom StackArray in Java code

package com.kartik.tutorials;

import java.util.Arrays;

public class MyStackArray<E> {
  private int size = 0;
  private static final int DEFAULT_CAPACITY = 10;
  private Object elements[];

  public MyStackArray() {
    elements = new Object[DEFAULT_CAPACITY];
  }

  public void push(E e) {
    if (size == elements.length) {
      ensureCapa();
    }
    elements[size++] = e;
  }

  @SuppressWarnings("unchecked")
  public E pop() {
    E e = (E) elements[--size];
    elements[size] = null;
    return e;
  }

  private void ensureCapa() {
    int newSize = elements.length * 2;
    elements = Arrays.copyOf(elements, newSize);
  }
}



package com.kartik.tutorials;

import java.util.ArrayList;

public class MyStackList<E> extends ArrayList<E> {

  private static final long serialVersionUID = 1L;

  public E pop() {
    E e = get(size() - 1);
    remove(size() - 1);
    return e;
  }

  public void push(E e) {
    add(e);
  }

}






This is a small JUnit test for the data structure.



package com.kartik.tutorials;

import static org.junit.Assert.assertTrue;

import org.junit.Before;
import org.junit.Test;

public class MyStackTest {

  @Before
  public void setUp() throws Exception {

  }

  @Test
  public void testStackArray() {
    MyStackArray<Integer> stack = new MyStackArray<Integer>();
    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.push(3);
    stack.push(4);
    assertTrue(4 == stack.pop());
    assertTrue(3 == stack.pop());
    assertTrue(3 == stack.pop());
    assertTrue(2 == stack.pop());
    assertTrue(1 == stack.pop());
  }

  @Test
  public void testStackList() {
    MyStackList<Integer> stack = new MyStackList<Integer>();
    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.push(3);
    stack.push(4);
    assertTrue(4 == stack.pop());
    assertTrue(3 == stack.pop());
    assertTrue(3 == stack.pop());
    assertTrue(2 == stack.pop());
    assertTrue(1 == stack.pop());
  }

}


Previous
Next Post »