[Java] Stack과 Queue

🏃‍♀️·2023년 8월 24일

Java [이론]

목록 보기
6/14

LIFO와 FIFO

LIFO(후입선출)

LIFO는 Last In First Out 의 약자로 나중에 넣은 객체가 먼저 빠져나가는 자료구조를 말한다.
즉, 입구와 출구가 하나로 통일된 구조이다.

FIFO(선입선출)

FIFO는 First In First Out 의 약자로 먼저 넣은 객체가 먼저 빠져나가는 자료구조를 말한다.
입구와 출구가 따로 존재하는 구조이다.


Stack

Stack 클래스는 LIFO 자료구조를 구현한 클래스이다.

Stack 클래스의 주요 메소드

리턴 타입메소드설명
Epush(E item)주어진 객체를 스택에 넣는다.
Epeek()스택의 맨 위 객체를 가져온다. 객체를 제거하지 않는다.
Epop()스택의 맨 위 객체를 가져온다. 객체를 제거한다.

Stack 생성하기

Stack<E> stack = new Stack<E>();
Stack<E> stack = new Stack<>();

실습해보기

Box 객체 생성
Stack에 쌓을 객체의 클래스를 생성합니다.

public class Box {
    private int value;

    public Box(int value){
        this.value = value;
    }

    public int getValue(){
        return value;
    }
}

main 작성

Stack<Box> boxes = new Stack<>();

boxes.push(new Box(5));
boxes.push(new Box(50));
boxes.push(new Box(500));

System.out.println(boxes.pop().getValue());
System.out.println(boxes.peek().getValue());
System.out.println(boxes.pop().getValue());

출력결과
500
50
50


Queue

Queue 인터페이스는 FIFO 자료구조에서 사용되는 메소드를 정의하고 있다.

Queue 인터페이스에 정의된 메소드

리턴 타입메소드설명
booleanoffer(E e)주어진 객체를 넣는다.
Epeek()객체를 가져온다. 객체를 제거하지 않는다.
Epoll()객체를 가져온다. 객체를 제거한다.

Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList이다.

Queue<E> queue = new LinkedList<E>();
Queue<E> queue = new LinkedList<>();

LinkedList를 Queue 인터페이스로 변환하여 사용하기

message 클래스 생성

public class Message {
    public String command;
    public String to;

    public Message(String command, String to){
        this.command = command;
        this.to = to;
    }
}

main 작성

Queue<Message> messageQueue = new LinkedList<Message>();

messageQueue.offer(new Message("sendMail","홍길동"));
messageQueue.offer(new Message("sendSMS", "신짱구"));

Message message = messageQueue.poll();
System.out.println(message.command + message.to);
System.out.println(messageQueue.poll().to);

출력 결과
sendMail홍길동
신짱구

0개의 댓글