이 자료구조는 양쪽에서 삽입과 반환이 가능한 구조다.
즉, 양 끝에서 삽입과 삭제가 이루어진다.
pop, push, poll 기능 다 가능
ArrayDeque 살펴보기
ArrayDeque<Integer> arrayDeque = new ArrayDeque<>();
arrayDeque.addFirst(e:1);
arrayDeque.addFirst(e:2);
arrayDeque.addFirst(e:3);
arrayDeque.addFirst(e:4);
System.out.println(arrayDeque);
[4, 3, 2, 1]
우리가 넣은 반대 순서로 나오게 되는데, .addFirst로 앞자리에 넣을거야! 하는데 계속 앞자리에 넣으니까 우선예약 마냥
앞자리 가로채는 것.
뒤에다 넣기
ArrayDeque<Integer> arrayDeque = new ArrayDeque<>();
arrayDeque.addFirst(e:1);
arrayDeque.addFirst(e:2);
arrayDeque.addFirst(e:3);
arrayDeque.addFirst(e:4);
System.out.println(arrayDeque);
arrayDeque.addLast(e:0);
System.out.println(arrayDeque);
[4, 3, 2, 1, 0]
offerFirst
ArrayDeque<Integer> arrayDeque = new ArrayDeque<>();
arrayDeque.addFirst(e:1);
arrayDeque.addFirst(e:2);
arrayDeque.addFirst(e:3);
arrayDeque.addFirst(e:4);
System.out.println(arrayDeque);
arrayDeque.addLast(e:0);
System.out.println(arrayDeque);
arrayDeque.offerFirst(e:10);
System.out.println(arrayDeque);
[10, 4, 3, 2, 1, 0]
.addFirst랑 다른 .offerFirst는 que의 크기에 문제가 생길 때 false라는 리턴값을 리턴한다.
크기에 문제가 생길 때, 만약 addFrist를 하면 exception이 난다.
offerLast
ArrayDeque<Integer> arrayDeque = new ArrayDeque<>();
arrayDeque.addFirst(e:1);
arrayDeque.addFirst(e:2);
arrayDeque.addFirst(e:3);
arrayDeque.addFirst(e:4);
System.out.println(arrayDeque);
arrayDeque.addLast(e:0);
System.out.println(arrayDeque);
arrayDeque.offerFirst(e:10);
System.out.println(arrayDeque);
arrayDeque.offerLast(e:-1);
System.out.println(arrayDeque);
[10, 4, 3, 2, 1, 0, -1]
element를 추가하고 싶을 때,
ArrayDeque<Integer> arrayDeque = new ArrayDeque<>();
arrayDeque.addFirst(e:1);
arrayDeque.addFirst(e:2);
arrayDeque.addFirst(e:3);
arrayDeque.addFirst(e:4);
System.out.println(arrayDeque);
arrayDeque.addLast(e:0);
System.out.println(arrayDeque);
arrayDeque.offerFirst(e:10);
System.out.println(arrayDeque);
arrayDeque.offerLast(e:-1);
System.out.println(arrayDeque);
arrayDeque.push(e:22);
System.out.println(arrayDeque);
[22, 10, 4, 3, 2, 1, 0, -1]
22가 앞으로 들어간다.
element를 꺼내 삭제하고 싶을 때,
ArrayDeque<Integer> arrayDeque = new ArrayDeque<>();
arrayDeque.addFirst(e:1);
arrayDeque.addFirst(e:2);
arrayDeque.addFirst(e:3);
arrayDeque.addFirst(e:4);
System.out.println(arrayDeque);
arrayDeque.addLast(e:0);
System.out.println(arrayDeque);
arrayDeque.offerFirst(e:10);
System.out.println(arrayDeque);
arrayDeque.offerLast(e:-1);
System.out.println(arrayDeque);
arrayDeque.push(e:22);
System.out.println(arrayDeque);
arrayDeque.pop();
System.out.println(arrayDeque);
[10, 4, 3, 2, 1, 0, -1]
22를 꺼내서 삭제함.
poll/pollFirst/pollLast 도 가능
그냥 poll하면 맨 앞에있는거 하나 꺼내서 삭제
peek/peekFirst/peekLast 도 가능
그냥 peek하면 맨 앞에있는거 하나 꺼내서 리턴
size / clear / empty / isEmpty 다 가능