웹 브라우저의 앞으로 가기, 뒤로 가기 기능 구현해 보기(스택 이용)
class Browser{
private LinkedList<String> back; //이전 방문 내역이 저장될 스택
private LinkedList<String> forward; //다음 방문 내역이 저장될 스택
private String currentURL; //현재 페이지
//생성자
public Browser(){
back = new LinkedList<>();
forward = new LinkedList<>();
currentURL = "";
}
//사이트를 방문하는 메서드 ==> 매개변수에 방문한 url이 저장
public void goURL(String url){
System.out.println(url + "사이트로 접속합니다.");
if(currentURL != null && !"".equals(currentURL)){
back.push(currentURL);
}
currentURL = url;
}
//뒤로가기
public void goBack(){
//isEmpty() ==> list가 비어있으면 true, 그렇지 않으면 false
if(!back.isEmpty()){ // 비어있지 않으면
// 현재 URL을 forward 스택에 추가하고
forward.push(currentURL);
// back 스택에서 꺼내온 값을 현재 URL로 한다.
currentURL = back.pop();
}
}
//앞으로 가기
public void goForward(){
if(!forward.isEmpty()){
// 현재 URL을 back에 추가
back.push(currentURL);
// forward에서 꺼내온 값을 현재 URL로 한다.
currentURL = forward.pop();
}
}
//방문 기록 확인하기
public void history(){
System.out.println();
System.out.println("----------------------");
System.out.println(" 방 문 기 록");
System.out.println("----------------------");
System.out.println("back ==> " + back);
System.out.println("현재 ==> " + currentURL);
System.out.println("forward ==> " + forward);
System.out.println();
}
}
//-----------------------------------------------------
public class StackTest {
public static void main(String[] args) {
Browser b = new Browser();
b.goURL("1. 네이버");
b.history();
b.goURL("2. 야후");
b.history();
b.goURL("3. 구글");
b.history();
b.goURL("4. 다음");
b.history();
System.out.println("뒤로가기 후...");
b.goBack();
b.history();
System.out.println("뒤로가기 후...");
b.goBack();
b.history();
System.out.println("앞으로 가기 후...");
b.goForward();
b.history();
System.out.println("새로운 사이트 접속 후...");
b.goURL("5. 네이트");
b.history();
}
}
Console
1. 네이버사이트로 접속합니다.
----------------------
방 문 기 록
----------------------
back ==> []
현재 ==> 1. 네이버
forward ==> []
2. 야후사이트로 접속합니다.
----------------------
방 문 기 록
----------------------
back ==> [1. 네이버]
현재 ==> 2. 야후
forward ==> []
3. 구글사이트로 접속합니다.
----------------------
방 문 기 록
----------------------
back ==> [2. 야후, 1. 네이버]
현재 ==> 3. 구글
forward ==> []
4. 다음사이트로 접속합니다.
----------------------
방 문 기 록
----------------------
back ==> [3. 구글, 2. 야후, 1. 네이버]
현재 ==> 4. 다음
forward ==> []
뒤로가기 후...
----------------------
방 문 기 록
----------------------
back ==> [2. 야후, 1. 네이버]
현재 ==> 3. 구글
forward ==> [4. 다음]
뒤로가기 후...
----------------------
방 문 기 록
----------------------
back ==> [1. 네이버]
현재 ==> 2. 야후
forward ==> [3. 구글, 4. 다음]
앞으로 가기 후...
----------------------
방 문 기 록
----------------------
back ==> [2. 야후, 1. 네이버]
현재 ==> 3. 구글
forward ==> [4. 다음]
새로운 사이트 접속 후...
5. 네이트사이트로 접속합니다.
----------------------
방 문 기 록
----------------------
back ==> [3. 구글, 2. 야후, 1. 네이버]
현재 ==> 5. 네이트
forward ==> [4. 다음]