Stack과 Queue에 대해 간략히 정리 해보자.
Stack
선입 후출
의 개념을 가진다.가장 마지막
에 빠져 나가는 자료 구조 형태Queue
선입 선출
의 개념을 가진다.Stack과 Queue는 특정 알고리즘에서 사용이 된다.
기본 Method 제공
위 세 가지 Method는 예외 처리 메커니즘이 제공 되며, 실제로 예외가 발생 한다.
add
(E e)삽입
한다.remove
()참조 값
을 반환
해준다.element
()추가 Method 제공
Queue 자료구조는 다른 자료 구조나, 알고리즘을 구현하는 도구가 되기도 한다.
예외 상황 자체가 알고리즘의 일부, 또는 해당 상황을 활용 할 수 도 있기 때문에.
offer
(E e)false
반환poll
()null
반환peek
()null
반환package com.java.study.Queue;
import java.util.LinkedList;
public class Queue {
public static void main(String[] args) {
java.util.Queue<String> que = new LinkedList<String>();
que.offer("A");
que.offer("B");
que.offer("C");
// 우엇이 다음에 나올지 확인
System.out.println("next : " + que.peek());
// 첫 번째, 두 번째 인스턴스 꺼내기
System.out.println(que.poll());
System.out.println(que.poll());
// 무엇이 다음에 나올지 확인
System.out.println("next : " + que.peek());
// 마지막 인스턴스 꺼내기
System.out.println(que.poll());
}
}
LinkedList<E>
는 List< E >와 동시에 Queue< E >를 구현하는 Collection Class다.리스트
, 큐
로 동작한다.'Stack 클래스
가 존재 한다.호환성
을 위해 구현되어 있는 클래스.Deque< E > 인터페이스의 메소드
// Deque<E> 자료 구조의 경우 입구, 출구가 뚫려 있는 그림이기에 위치에 상관없이 데이터를 꺼낼 수 있다
앞으로 넣고, 꺼내고, 확인하기
offerFirst
(E e)pollFirst
()peekFirst
()뒤로 넣고, 꺼내고, 확인하기
offerLast
(E e)pollLast
()peekLast
()위 두 세트를 한 세트로 바라봐야 한다. 즉 들어가는 위치, 출력되는 위치만 다른 것이다.
내부적으로 예외 처리를 제공해주는 Method
앞으로 넣고, 꺼내고, 확인하기
addFirst
(E e) : 넣기removeFirst
() : 꺼내기getFirst
() : 확인하기뒤로 넣고, 꺼내고, 확인하기
addLast
(E e) : 넣기emoveLast
() : 꺼내기getLast
() : 확인하기Map<key, value>는 실무에서 가장 많이 사용 되는 자료 구조로 중요하다.
Map<k, v>의 특징
반복자
를 제공하지 않는다.참조
하는데 필요한 정보
또는 찾기 쉽도록 책갈피
역할을 해주는 것.실제 데이터
를 의미한다.중복
을 허용하지 않고, Value는 중복
을 허용 한다.Map의 순차적인 접근?
중복
을 허용하지 않기 때문이다.HashMap<K, V>의 순차적 접근 방법
HashMap<k, v> 클래스는 Iterable< T > 인터페이스를 구현하지 않으니 for-each문을 통해서, 혹은
반복자를 얻어서 순차적 접근을 진행 할 수 없다.
대신 다음 메소드 호출을 통해서 Key를 따로 모아 놓은 Collection Instance를 얻을 수 있다.
그리고 이때 반환된 Collection Instance를 대상으로 반복자를 얻을 수 있다.
public Set<K> **keySet**()
package com.java.study;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
// [1] Map<k, v>
Map<String, Object> map = new HashMap<String, Object>();
map.put("a", "A");
map.put("b", "B");
map.put("c", "C");
System.out.println("a : " + map.get("a"));
System.out.println("b : " + map.get("b"));
System.out.println("c : " + map.get("c"));
System.out.println();
map.remove("a");
System.out.println("a : " + map.get("a"));
System.out.println();
// [2] HashMap<k, v>
HashMap<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("a", "Brown");
paramMap.put("b", "Jane");
paramMap.put("c", "Aplil");
paramMap.put("d", "Kane");
paramMap.put("e", "Mike");
paramMap.put("f", "Michel");
Set<String> paramKey = paramMap.keySet();
for(String key : paramKey) {
System.out.print(key + "\t");
}
System.out.println();
for(String key : paramKey) {
System.out.print(paramMap.get(key) + "\t");
}
}
}