반응형
Queue만 쓰면 안되나요?
Queue도 List처럼 LinkedList(조회 보다는 수정에 효율이 좋은 자료 구조), 기본 구조(FIFO)를 바탕으로 특수한 상황에 맞춰 사용할 수 있도록 추가적인 자료구조를 찾아 볼 수 있습니다.
- ArrayBlockingQueue
- LinkedBlockingQueue
- PriorityBlockingQueue
- DelayQueue
- LinkedTransferQueue
- SynchronousQueue
- ConcurrentLinkedQueue
- ...
여러가지가 있겠지만 제가 주로 사용하던 자료구조를 들고 왔습니다. -> PriorityQueue
사용 이유는 즉슨 데이터가 들어가는 순간 Queue 내부에서 기본 우선순위(작은값 >>> 큰값)를 따라 정렬이 이루어 집니다.
PriorityQueue<Integer> integerQueue = new PriorityQueue<>();
integerQueue.add(9);
integerQueue.add(2);
integerQueue.add(4);
int first = integerQueue.poll();
int second = integerQueue.poll();
int third = integerQueue.poll();
// 2, 4, 9 순으로 출력됩니다!
배열의 크기가 고정되어 있는 경우에는 배열을 정렬해서 쉽게 처리 가능합니다.
그와 반대로 자료구조의 크기가 빈번하게 수정이 이루어질때마다 정렬하는 경우엔 PriorityQueue가 좀더 나은 선택이 될 수 있습니다.
반응형
'Java' 카테고리의 다른 글
java #5 [Stack] (0) | 2022.11.02 |
---|---|
[Java][AutoCloseable] 파일 I/O에 유용한 코드 및 개념 정리 (0) | 2022.10.20 |
java #4 [Queue, Dequeue] (0) | 2020.07.08 |
java #3 [ArrayList, LinkedList, SynchronizedList] (0) | 2020.07.06 |
Java #3 [InputStream] (0) | 2020.06.29 |