[java] 스택을 이용한 브라우저 뒤로 가기/앞으로 가기 기능 구현하기

브라우저의 뒤로 가기/앞으로 가기 기능은 스택(Stack)을 이용하여 쉽게 구현할 수 있습니다. 스택은 후입선출(LIFO) 구조로 동작하는 자료구조로, 브라우저의 이동 기록을 저장할 수 있습니다.

스택 구현

import java.util.Stack;

public class BrowserStack {
    private Stack<String> backStack;
    private Stack<String> forwardStack;
    private String currentUrl;

    public BrowserStack() {
        backStack = new Stack<>();
        forwardStack = new Stack<>();
        currentUrl = "";
    }

    public void goTo(String url) {
        backStack.push(currentUrl);
        currentUrl = url;
        forwardStack.clear();
    }

    public void goBack() {
        if (!backStack.isEmpty()) {
            forwardStack.push(currentUrl);
            currentUrl = backStack.pop();
        }
    }

    public void goForward() {
        if (!forwardStack.isEmpty()) {
            backStack.push(currentUrl);
            currentUrl = forwardStack.pop();
        }
    }

    public String getCurrentUrl() {
        return currentUrl;
    }
}

위의 코드는 BrowserStack 클래스를 구현한 것입니다. 이 클래스는 goTo, goBack, goForward, getCurrentUrl 메서드를 통해 브라우저의 이동 기능을 제공합니다. backStackforwardStack은 각각 뒤로 가기와 앞으로 가기 기능을 위해 사용되며, currentUrl은 현재 페이지의 URL을 저장합니다.

사용 예제

public class Main {
    public static void main(String[] args) {
        BrowserStack browser = new BrowserStack();

        browser.goTo("https://www.google.com");
        browser.goTo("https://www.naver.com");
        browser.goTo("https://www.github.com");

        System.out.println("Current URL: " + browser.getCurrentUrl());

        browser.goBack();
        System.out.println("Current URL: " + browser.getCurrentUrl());

        browser.goForward();
        System.out.println("Current URL: " + browser.getCurrentUrl());
    }
}

위의 예제 코드는 BrowserStack 클래스를 사용하여 브라우저의 이동 기능을 테스트하는 예제입니다. goTo 메서드로 각각의 URL로 이동한 후, goBackgoForward 메서드를 통해 뒤로 가기와 앞으로 가기 기능을 실행하여 현재 URL을 출력합니다.

참고 자료