[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 메서드를 통해 브라우저의 이동 기능을 제공합니다. backStack과 forwardStack은 각각 뒤로 가기와 앞으로 가기 기능을 위해 사용되며, 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로 이동한 후, goBack과 goForward 메서드를 통해 뒤로 가기와 앞으로 가기 기능을 실행하여 현재 URL을 출력합니다.