본문 바로가기

Java 기초(복습용)

java) 컬렉션 프레임워크(List,Queue, Set / Map)

 

* 컬렉션 프레임워크(자료구조를 구현한 라이브러리)

   크기가 고정되어 있지 않고, 여러 객체를 담을 수 있는 라이브러리.

 

Iterator  
  └ Collection  
      ├ List  
      │   ├ ArrayList  
      │   ├ LinkedList  
      │   ├ Vector  
      │  
      ├ Set  
      │   ├ HashSet  
      │   ├ LinkedHashSet  
      │   ├ TreeSet  
      │  
      ├ Queue  
          ├ LinkedList  
          ├ PriorityQueue

 

 

 

★ List

 

 

 

★ Set

 

 

 

★ Stack(List에 포함되는건 아님, List를 확장하여 구현), Queue

1. Stack이란? 

   주로 일상생활에서 "스텍을 쌓는다" 라는 말로 많이 쓰이는데, 스텍을 순서대로 쌓으며 후입선출 구조를 가진다.

   top(윗부분)을 통해 삽입하는 연산을 'push' , 삭제하는 연산을 'pop'이라고 한다.

 

# Stack 사용 예시

- 웹 브라우저의 뒤로 가기 기능 (=마지막에 사용한 브라우저로 가기)

- 웹 애플리케이션에서 히스토리 관리(=마지막에 사용한 히스토리로 가기)

* stack은 Stack<>()을 통하여 구현
* 등록 : push()
* 삭제 : pop()

Stack<String> stack = new Stack<>();  // 스택 생성

stack.push("첫 번째");  // "첫 번째" 요소 추가
stack.push("두 번째");  // "두 번째" 요소 추가

System.out.println(stack.pop());  // "두 번째" 삭제하고 출력
System.out.println(stack.pop());  // "첫 번째" 삭제하고 출력

 

 

 

1. Queue란? 

    예시로 LOL에서 "큐를 돌린다"라고 하는데, 큐를 돌리고 매칭이 되는 순서 --> 먼저 큐를 돌린 사람 기준으로 매칭이 됨

    즉, 선입선출 구조를 가짐

 

# Queue 사용 예시

- 프린터 대기열(출력 요청을 순차적으로 처리 / 우선 요청한 요청부터 처리)

- 작업 스케줄링(서버에서 들어오는 요청은 큐를 사용하여, 요청 순서대로 처리)

* 주로 LinkedList<>()를 사용하여 구현
* 등록 : offer()
* 삭제 : poll()

Queue<String> queue = new LinkedList<>();  // LinkedList를 사용하여 Queue 생성

queue.offer("첫 번째");  // 큐에 "첫 번째" 삽입
queue.offer("두 번째");  // 큐에 "두 번째" 삽입

System.out.println(queue.poll());  // 첫 번째 요소인 "첫 번째"를 삭제하고 출력
System.out.println(queue.poll());  // 두 번째 요소인 "두 번째"를 삭제하고 출력
System.out.println(queue.poll());  // 큐가 비어 있으므로 null 출력

 

 

🎶 스택과 큐의 실행결과

 

 

* Map(컬렉션 프레임워크 아님)

 

 

 

 

출처: https://devuna.tistory.com/22