Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Today
Yesterday

Total
04-30 00:00
관리 메뉴

Hey Tech

[Java] 큐(Queue) 자료구조 데이터 추가/삭제 방법!(+코드) 본문

SW 개발/Java

[Java] 큐(Queue) 자료구조 데이터 추가/삭제 방법!(+코드)

Tony Park 2021. 11. 16. 08:26
728x90
반응형

안녕하세요,

오늘은 Java에서 큐(Queue) 자료구조의 데이터 추가및 삭제하는 방법에 대해 공유합니다.

💡 학습목표

Java 언어에서 Queue 자료구조의 데이터 삽입/삭제하는 방법을 이해한다.

1.  큐 자료구조란?

그림 1.  큐(queue) 자료구조 설명.

큐 자료구조는 선입선출(先入先出, 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에서 큐 자료고주의 데이터 삽입/삭제 방법에 대해 알아봤습니다.

포스팅 내용에 오류가 있다면 아래에 댓글 남겨주시면 감사드리겠습니다.

그럼 오늘도 멋진 하루 만드시길 바랍니다.

고맙습니다 :)

 

728x90
반응형
Comments