DATA101
[Java] 큐(Queue) 자료구조 데이터 추가/삭제 방법!(+코드) 본문
안녕하세요,
오늘은 Java에서 큐(Queue) 자료구조의 데이터 추가및 삭제하는 방법에 대해 공유합니다.
💡 학습목표
Java 언어에서 Queue 자료구조의 데이터 삽입/삭제하는 방법을 이해한다.
1. 큐 자료구조란?
큐 자료구조는 선입선출(先入先出, First In First Out, 줄여서 FIFO) 구조로,
흔히 놀이공원 내 놀이기구 대기줄에 비유합니다(그림 1 참고).
즉, 놀이기구 대기줄에 먼저 선 사람(데이터 입력)이 먼저
놀이기구를 타는(데이터 출력/제거) 방식입니다(단, 새치기는 없다고 가정).
2. 큐 객체 생성
public class Hello {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<>();
}
}
정수형 변수를 원소로 갖는 큐 객체를 생성합니다.
3. 데이터 삽입
큐에 데이터 삽입을 위한 메서드는 add()와 offer()로 총 2가지가 있습니다.
각각에 대해 알아보겠습니다.
1) Add() 메서드 활용
public class Hello {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<>();
q.add(10);
q.add(20);
q.add(30);
System.out.println(q);
}
}
실행 결과
[10, 20, 30]
간단하게 Queue.add(value)를 통해 데이터를 추가할 수 있습니다.
2) Offer() 메서드 활용
public class Hello {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<>();
q.add(10);
q.add(20);
q.add(30);
System.out.println(q);
}
}
Offer 메서드 역시 간단하게 Queue.offer(value)를 통해 데이터를 추가할 수 있습니다.
실행 결과
[10, 20, 30]
3) add 메서드와 offer 메서드의 차이점
두 메서드의 실행 결과는 완벽하게 일치합니다.
그렇다면, 두 메서드의 차이점은 무엇일까요?
바로 큐에 데이터가 꽉 차 있는 경우, 메서드 실행 시 반환하는 결괏값의 차이입니다.
큐에 데이터가 꽉차는 경우, add 매서드의 경우에는 IllegalStateException 에러를 발생시킵니다.
반면, offer 메서드의 경우 false를 반환합니다.
즉, 대용량 데이터를 다루며 add 메서드를 사용 시,
try~catch 구문을 활용해 예외처리를 해주어야 프로그램이 동작할 것입니다.
4. 데이터 삭제
큐에 데이터 삭제를 위한 메서드는 remove()와 poll()로 총 2가지가 있습니다.
각각에 대해 알아보겠습니다.
1) remove() 메서드
public class Hello {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<>();
q.add(10);
q.add(20);
q.add(30);
System.out.println(q); // [10, 20, 30]
q.remove();
System.out.println(q); // [20, 30]
}
}
실행 결과
[10, 20, 30]
[20, 30]
remove 메서드를 이용하면 먼저 삽입된 데이터일수록 먼저 제거됩니다.
왜냐하면, 큐는 선입선출(First In First Out, FIFO) 자료구조이기 때문이죠.
큐 자료구조에 대한 자세한 내용은 이 글을 참고해 주세요.
2) poll() 메서드
public class Hello {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<>();
q.add(10);
q.add(20);
q.add(30);
System.out.println(q); // [10, 20, 30]
q.poll();
System.out.println(q); // [20, 30]
}
}
remove 메서드와 마찬가지로, poll 메서드는 큐에서 먼저 삽입된 데이터를 제거합니다.
실행 결과
[10, 20, 30]
[20, 30]
3) remove 메서드와 poll 메서드의 차이점
remove 메서드와 poll 메서드의 차이점은 무엇일까요?
바로 큐가 비어있을 때 반환되는 결과가 다르다는 것입니다.
큐가 비어있을 때, remove 메서드는 Exception을 발생시키지만,
poll 메서드는 null을 반환합니다.
이러한 차이를 고려하여 프로그램 목적과 기능을 고려하여 메서드를 적절하게 선택해야 합니다.
오늘은 Java에서 큐 자료고주의 데이터 삽입/삭제 방법에 대해 알아봤습니다.
포스팅 내용에 오류가 있다면 아래에 댓글 남겨주시면 감사드리겠습니다.
그럼 오늘도 멋진 하루 만드시길 바랍니다.
고맙습니다 :)
'SW 개발 > Java' 카테고리의 다른 글
[Java] JavaFX 설치 방법, 환경 설정, 사용 방법 (8) | 2021.11.24 |
---|---|
[Java] Syntactic Sugar 의미와 삼항연산자 활용 방법 공유! (0) | 2021.11.17 |
[Java] Switch~case 문을 활용한 정형화된 제어문 작성하기! (1) | 2021.11.15 |
[Java] 임의의 정수 데이터 생성하기! (Random 모듈 활용) (0) | 2021.11.14 |
[Java] 클린코드를 위한 for 반복문 작성 규칙+이클립스 단축키 공유! (0) | 2021.11.14 |