Stack 자바 직접구현

서버란·2024년 9월 2일

CS 지식

목록 보기
2/25
  • Stackable 인터페이스
public interface Stackable<E> extends Iterable<E>{

    // access: isEmpty
    // if any elemetns exist, or not: false: true
    public boolean isEmpty();

    // access: push
    // insert a elements to last of stack
    public void push(E element);

    //access: pop
    // get a elements from last with delet
    public E pop();

    // access: top
    // get a eleements from last without delet
    public E top() ;
}
  • ArrayStack 클래스
import java.util.Arrays;
import java.util.Iterator;

public class ArrayStack<E> implements Stackable<E> {

    private E[] elements;
    private int index = 0;

    // default constructor
    @SuppressWarnings("unchecked")
    public ArrayStack() {
        this.elements = (E[]) new Object[10];
    }

    // constructor copy
    public ArrayStack(ArrayStack<E> stack) {
        this.elements = stack.elements.clone();
    }

    // access: isEmpty
    // if any elemetns exist, or not: true, false
    @Override
    public boolean isEmpty() {
        return this.index == 0 ? true : false;
    }

    // access: push
    // insert a elements to last of stack
    @Override
    public void push(E element) {
        this.elements[index++] = element;
    }

    // access: pop
    // get a elements from last or stack with delet
    @Override
    public E pop() {
        return this.elements[--index];
    }

    // access: top
    // get a eleements from last
    @Override
    public E top() {
        return this.elements[index];
    }

    @Override
    public Iterator<E> iterator() {
        // return Arrays.stream(elements).iterator();
        return Arrays.stream(elements).filter(x -> x != null).iterator();
    }
}
  • Main 클래스
public class Main {
    public static void main(String[] args) {

        Stackable<String> stack = new ArrayStack<>();

        stack.push("1");
        stack.push("2");
        stack.push("3");

        for (String string : stack) {
        System.out.println(string);
        }

    }
}

출력:
1
2
3

profile
백엔드에서 서버엔지니어가 된 사람

0개의 댓글