[ITWILL : JSP]자료구조2 : Stack클래스, Queue인터페이스, Map인터페이스

ITWILL학원 : 27강 JSP기초 BY 정규태강사

https://slidesplayer.org/slide/11290986/

1. 자료구조 : Stack 클래스

  • top에서만 데이터의 입출력 발생하기 때문.
  • LIFO 구조(FILO 구조) : 가장 먼저 들어온 데이터가 가장 마지막에 나가는 구조.
    • 데이터 입력 -> push
    • 데이터 빼내기 -> pop
  • 장점 : 특정 자료구조의 형태로 처리했을때 데이터처리가 가장 효율적이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Stack st = new Stack();

//데이터삽입
st.push("1-java");
st.push("2-jsp");
st.push("3-web");
st.push("4-db");
System.out.println(st);

//데이터 빼내기
while(! st.isEmpty()){ //스택클래스가 비어있지 않은 경우
System.out.println(st.pop()); //LIFO
}
System.out.println(st);

//출력값
[1-java, 2-jsp, 3-web, 4-db]
4-db
3-web
2-jsp
1-java
[]

출력값을 보면 데이터가 빠져나가는 순서가 LIFO이다.

2. 자료구조 : Queue 인터페이스

  • FIFO/LILO : 먼저 들어온 데이터가 먼저 처리되는 구조. 즉 입력된 순서대로 처리되는 구조
    • First Input First Output
    • Last Input Last Output
  • 스택은 클래스이지만 큐는 인터페이스이다 -> 따라서 큐는 객체생성을 할수없지만 구현을 통해서 생성가능하다
    • LinkedList 클래스 : 큐인터페이스를 구현한 클래스
    • 인터페이스는 업캐스팅이 가능할까? ㅇㅇ 가능!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Queue que = new LinkedList(); //업캐스팅(LinkedList클래스->Queue인터페이스)
//데이터입력
que.offer("1-java");
que.offer("2-jsp");
que.offer("3-web");
que.offer("4-db");
System.out.println(que);

//데이터빼내기
//peek() : Queue안에 데이터가 있는지 없는지 판단하는 메서드 -> 없으면 null리턴
while(que.peek() != null){ // 큐 안에 데이터가 있는지 없는지 판단, 없을경우 null
System.out.println(que.poll());
}

//출력값
[1-java, 2-jsp, 3-web, 4-db]
1-java
2-jsp
3-web
4-db

출력값을 보면 빠져나가는 순서가 FIFO이다.

3. 자료구조 : Map인터페이스

  • Map, table 접미어가 붙은 자료구조이다.
  • 데이터저장시 (키, 데이터)쌍으로 저장하여 사용하는 구조
  • map은 인터페이스이므로 객체생성을 할수없지만 구현을 통해서 생성가능하다
    • hashtable 클래스 : 맵인터페이스를 구현한 클래스
  • 키값을 사용해서 검색 인덱스생성 -> 데이터 검색시간이 짧음.
  • 참고링크 : 컬렉션 프레임워크 Map계열 자세히

https://lelumiere.tistory.com/3

  • 예시 : Map계열의 hashtable
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Map m = new Hashtable(); //업캐스팅

    //데이터입력
    m.put("사과", "apple");
    m.put("오렌지", "orange");
    m.put("복숭아", "peach");
    System.out.println(m);

    //데이터출력하기
    System.out.println(m.get("복숭아"));
    System.out.println(m.get("바나나"));

    //출력값
    {오렌지=orange, 사과=apple, 복숭아=peach}
    peach
    null