CharacterStack.java Source code

Java tutorial

Introduction

Here is the source code for CharacterStack.java

Source

/*******************************************************************************
 * Copyright (c) 2008 xored software, Inc.
 *
 * 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:
 *     xored software, Inc. - initial API and Implementation (Alex Panchenko)
 *******************************************************************************/

import java.util.EmptyStackException;

public class CharacterStack {

    private char[] buffer;
    private int size;

    public CharacterStack() {
        this(16);
    }

    /**
     * @param capacity
     */
    public CharacterStack(int capacity) {
        buffer = new char[capacity];
        size = 0;
    }

    /**
     * @return
     */
    public int size() {
        return size;
    }

    /**
     * @return
     */
    public char peek() {
        final int len = size;
        if (size == 0) {
            throw new EmptyStackException();
        }
        return buffer[len - 1];
    }

    /**
     * @return
     */
    public char pop() {
        int len = size;
        if (len == 0) {
            throw new EmptyStackException();
        }
        --len;
        final char result = buffer[len];
        size = len;
        return result;
    }

    /**
     * @param c
     */
    public void push(char c) {
        if (size == buffer.length) {
            char[] newBuffer = new char[buffer.length * 2 + 1];
            System.arraycopy(buffer, 0, newBuffer, 0, buffer.length);
            buffer = newBuffer;
        }
        buffer[size++] = c;
    }

}