Queue
Queue<V> queue = new ArrayDeque<>(); Queue<V> queue = new LinkedList<>();
Queue는 Interface이기 때문에, 위와같이 해당 인터페이스를 구현하는 두 가지 클래스로 생성하여, 저장할 수 있다.
이론적으로는 연결리스트의 특성을 갖는 LinekdList가 효율이 좋아야 하지만, 실제로는 여러 이유때문에 ArrayDeque이 속도가 조금 더 빠르다고 한다.
어차피 알고리즘 문제 내에서 큰 차이는 없을 것 같으니 아무거나 쓰자.
LinkedList<String> qu = new LinkedList<String>();//큐의 생성
//DeQue<String> qu = new ArrayDeque<String>();
//add()메소드를 이용한 저장
qu.add("넷");
qu.add("둘");
qu.add("셋");
qu.add("하나");
//peek() 반환 (=참조만 하는것뿐, 뽑는게 아니다.)
System.out.println(qu.peek());
//poll() 뽑기 (=뽑는것 큐에서 빼낸다.)
System.out.println(qu.poll());
//remove() 요소 제거
qu.remove("하나");
메소드 | 설명 |
boolean add(E e) | 해당 큐의 맨 뒤에 전달된 요소를 삽입. 삽입에 성공하면 true를 반환하고, 큐에 여유 공간이 없어 실패하면 IllegalStateException을 발생. |
E element() | 해당 큐의 맨 앞에 있는 (제일 먼저 저장된) 요소를 반환함. |
boolean offer(E e) | 해당 큐의 맨 뒤에 전달된 요소를 삽입함. |
E peek() | 해당 큐의 맨 앞에 있는 요소를 반환함. 만약 큐가 비어있으면 null을 반환. |
E poll() | 해당 큐의 맨 앞에 있는 요소를 반환하고 큐에서 제거한다. |
E remove() | 해당 큐의 맨 앞에 있는 요소를 제거함. |
Stack
Stack<V> stack = new Stack<>();
Stack은 위의 Queue와는 달리 인터페이스가 아니라 클래스다. 그렇기 때문에 귀찮은 고민할 필요 없이 Stack 클래스로 생성한 인스턴스를 저장해주고 사용하면 된다.
스택 생성
Stack<Element> stack = new Stack<>();
스택이 지원하는 메소드
public Element push(Element item); // 데이터 추가
public Element pop(); // 최근에 추가된(Top) 데이터 삭제
public Element peek(); // 최근에 추가된(Top) 데이터 조회
public boolean empty(); // stack의 값이 비었는지 확인, 비었으면 true, 아니면 false
public int seach(Object o); // 인자값으로 받은 데이터의 위치 반환
<예시>
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < 5; i++) {
stack.push(i + 1);
System.out.println(stack.peek());
} // 1, 2, 3, 4, 5 가 현재 들어가 있음
stack.pop(); // 1, 2, 3, 4
System.out.println(stack.peek()); // 4
System.out.println(stack.search(1)); // 4
System.out.println(stack.empty()); // false
출처:
Queue
Queue<V> queue = new ArrayDeque<>(); Queue<V> queue = new LinkedList<>();
Queue는 Interface이기 때문에, 위와같이 해당 인터페이스를 구현하는 두 가지 클래스로 생성하여, 저장할 수 있다.
이론적으로는 연결리스트의 특성을 갖는 LinekdList가 효율이 좋아야 하지만, 실제로는 여러 이유때문에 ArrayDeque이 속도가 조금 더 빠르다고 한다.
어차피 알고리즘 문제 내에서 큰 차이는 없을 것 같으니 아무거나 쓰자.
LinkedList<String> qu = new LinkedList<String>();//큐의 생성
//DeQue<String> qu = new ArrayDeque<String>();
//add()메소드를 이용한 저장
qu.add("넷");
qu.add("둘");
qu.add("셋");
qu.add("하나");
//peek() 반환 (=참조만 하는것뿐, 뽑는게 아니다.)
System.out.println(qu.peek());
//poll() 뽑기 (=뽑는것 큐에서 빼낸다.)
System.out.println(qu.poll());
//remove() 요소 제거
qu.remove("하나");
메소드 | 설명 |
boolean add(E e) | 해당 큐의 맨 뒤에 전달된 요소를 삽입. 삽입에 성공하면 true를 반환하고, 큐에 여유 공간이 없어 실패하면 IllegalStateException을 발생. |
E element() | 해당 큐의 맨 앞에 있는 (제일 먼저 저장된) 요소를 반환함. |
boolean offer(E e) | 해당 큐의 맨 뒤에 전달된 요소를 삽입함. |
E peek() | 해당 큐의 맨 앞에 있는 요소를 반환함. 만약 큐가 비어있으면 null을 반환. |
E poll() | 해당 큐의 맨 앞에 있는 요소를 반환하고 큐에서 제거한다. |
E remove() | 해당 큐의 맨 앞에 있는 요소를 제거함. |
Stack
Stack<V> stack = new Stack<>();
Stack은 위의 Queue와는 달리 인터페이스가 아니라 클래스다. 그렇기 때문에 귀찮은 고민할 필요 없이 Stack 클래스로 생성한 인스턴스를 저장해주고 사용하면 된다.
스택 생성
Stack<Element> stack = new Stack<>();
스택이 지원하는 메소드
public Element push(Element item); // 데이터 추가
public Element pop(); // 최근에 추가된(Top) 데이터 삭제
public Element peek(); // 최근에 추가된(Top) 데이터 조회
public boolean empty(); // stack의 값이 비었는지 확인, 비었으면 true, 아니면 false
public int seach(Object o); // 인자값으로 받은 데이터의 위치 반환
<예시>
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < 5; i++) {
stack.push(i + 1);
System.out.println(stack.peek());
} // 1, 2, 3, 4, 5 가 현재 들어가 있음
stack.pop(); // 1, 2, 3, 4
System.out.println(stack.peek()); // 4
System.out.println(stack.search(1)); // 4
System.out.println(stack.empty()); // false
출처: