Deque 구현체로 ArrayDeque와 LinkedList 를 주로 사용한다.
LinkedList에 값을 넣고 뽑기 위한 많은 메소드를 있는데, 헷갈리는 점이 있어서 정리한다.
Deque란?
예제1. First에 넣어볼까?
LinkedList<Integer> test = new LinkedList<Integer>();
test.offerFirst(1);
test.offerFirst(2);
test.offerFirst(3);
System.out.println(test.peekFirst());
System.out.println(test.peekLast());
for(int t : test){
System.out.print(t + " ");
}
출력:
3
1
3 2 1
offerFirst(1) | ||
First 입/출구 | 1 | Last 입/출구 |
offerFirst(2) | |||
First 입/출구 | 2 | 1 | Last 입/출구 |
offerFirst(3) | ||||
First 입/출구 | 3 | 2 | 1 | Last 입/출구 |
peekFirst() = 3
peekLast() = 1
예제2. First, Last 둘다 넣어보자
LinkedList<Integer> test1 = new LinkedList<Integer>();
test1.offerLast(1);
test1.offerLast(2);
test1.offerFirst(3);
test1.offerFirst(4);
System.out.println(test1.peekFirst());
System.out.println(test1.peekLast());
for(int t : test1){
System.out.print(t + " ");
}
출력:
4
2
4 3 1 2
offerLast(1) | ||
First 입/출구 | 1 | Last 입/출구 |
offerLast(2) | |||
First 입/출구 | 1 | 2 | Last 입/출구 |
offerFirst(3) | ||||
First 입/출구 | 3 | 1 | 2 | Last 입/출구 |
offerFirst(4) | |||||
First 입/출구 | 4 | 3 | 1 | 2 | Last 입/출구 |
peekFirst() = 4
peekLast() = 2
예제3. 그럼 add, offer, push 는 어디로 들어가는거지?
LinkedList<Integer> test2 = new LinkedList<Integer>();
test2.offerLast(1);
test2.offer(6);
test2.add(8);
test2.push(3);
for(int t : test2){
System.out.print(t + " ");
}
출력:
3 1 6 8
offerLast(1) | ||
First 입/출구 | 1 | Last 입/출구 |
offer(6) | |||
First 입/출구 | 1 | 6 | Last 입/출구 |
add(8) | ||||
First 입/출구 | 1 | 6 | 8 | Last 입/출구 |
push(3) | |||||
First 입/출구 | 3 | 1 | 6 | 8 | Last 입/출구 |
offer, add 는 Last
push는 First
예제4. 그럼 pop, poll 은?
System.out.println(test2.pop());
System.out.println(test2.poll());
pop() = 3
poll() = 1
둘다 First 쪽에서 값을 뽑아온다.
소스코드
import java.text.ParseException;
import java.util.LinkedList;
public class Main{
public static void main(String[] args) throws ParseException {
LinkedList<Integer> test = new LinkedList<Integer>();
test.offerFirst(1);
test.offerFirst(2);
test.offerFirst(3);
System.out.println(test.peekFirst());
System.out.println(test.peekLast());
for(int t : test){
System.out.print(t + " ");
}
System.out.println();
LinkedList<Integer> test1 = new LinkedList<Integer>();
test1.offerLast(1);
test1.offerLast(2);
test1.offerFirst(3);
test1.offerFirst(4);
System.out.println(test1.peekFirst());
System.out.println(test1.peekLast());
for(int t : test1){
System.out.print(t + " ");
}
System.out.println();
LinkedList<Integer> test2 = new LinkedList<Integer>();
test2.offerLast(1);
test2.offer(6);
test2.add(8);
test2.push(3);
for(int t : test2){
System.out.print(t + " ");
}
System.out.println();
System.out.println(test2.pop());
System.out.println(test2.poll());
}
}
'💻IT > Java' 카테고리의 다른 글
[Java] Java 8 Method Reference (메소드 참조) (0) | 2021.12.12 |
---|---|
[Java] Java 8 Functional Interface (0) | 2021.12.10 |
[Java] Java 8 Optional (0) | 2021.12.09 |
[Java] Java 8 Stream API (0) | 2021.12.03 |
[Java] Convert Array to List / Convert List to Array (0) | 2021.10.18 |