[TIL] 컬렉션 - java.util.Queue<E> 인터페이스 & 구현클래스
java.util.Queue<E> 란?
- Queue란 선입선출 (FIFO : First In First Out) 구조로 먼저 입력된 자료를 출력하는 구조를 의미한다.
- 중복적인 요소를 저장 가능하다.
- 구현 클래스 : LinkedList, PriorityQueue
Queue 객체 생성방법은
먼저 Queue<String> que = new LinkedList<>();
주요 메소드
boolean add(E e) | 지정된 요소를 큐의 마지막에 삽입 |
boolean offer(E e) | 지정된 요소를 큐의 마지막에 삽입한다 |
E element() | 큐의 head요소를 반환하며 삭제하지는 않는다. |
E peek() | 큐의 head요소를 반환하며 삭제하지는 않으며 큐가 empty이면 null을 반환 |
E poll() | 큐의 head 요소를 반환하고 삭제하며 큐가 empty이면 null을 반환 |
E remove() | 큐의 head 요소를 리턴하고 삭제한다. |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package ex0814;
import java.util.LinkedList;
import java.util.Queue;
public class Queue_Ex1 {
public static void main(String[] args) {
//QUEUE : FIFO
Queue<String> q = new LinkedList<>();
q.offer("머리");
q.offer("가슴");
q.offer("다리");
q.offer("발");
String s;
while(q.peek() !=null) {
s=q.poll();
System.out.println(s);
}
// peek : 큐 헤드 요소를 반환하고 삭제 안함. 없으면 null
// poll : 큐 헤드 요소를 반환하고 삭제. 없으면 .null
}
}
// 출력값
머리 가슴 다리 발 |
cs |
java.util.PriorityQueue<E>
일반적인 큐는 FIFO구조이다. 하지만 우선순위 큐는 우선순위를 결저아형 들어온 순서와는 상관없이 우선순위가 높은 순대로 먼저 출력하는 큐이다.
PriorityQueue는 Comparable 인터페이스를 구현하는 클래스의 요소를 저장하는데 Comparable 인터페이스가 큐 내에서 순서를 결정한다. 다른 방법은 생성자에 Comparator를 전달하는 방법도 있다.
그 예시이다.
comparable 클래스를 구현하여 compareTo 메소드를 재정의하여 이름순으로 출력하게끔 만들었다.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package ex0814;
import java.util.PriorityQueue;
public class Queue_Ex2 {
public static void main(String[] args) {
//PriorityQueue : 우선순위 큐
//comparable 인터페이스 구현 클래스만 가능
PriorityQueue<User11> q = new PriorityQueue<>();
q.offer(new User11("영헌",27));
q.offer(new User11("지영",26));
q.offer(new User11("유리",25));
q.offer(new User11("지원",24));
while(q.peek()!=null) {
User11 u =q.poll();
System.out.println(u.getName()+":"+u.getAge());
}
}
}
class User11 implements Comparable<User11>{
private String name;
private int age;
public User11() {}
public User11(String name, int age) {
this.name =name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(User11 o) {
return name.compareTo(o.getName());
}
}
//출력 값 영헌:27 유리:25 지영:26 지원:24 |
cs |
'Language > JAVA' 카테고리의 다른 글
[JAVA] 배열 (Array) 다루기 (0) | 2022.03.15 |
---|---|
[JAVA 복습] 접근 제어자 (Access Modifier) 와 캡슐화 (0) | 2022.02.10 |
[TIL] 컬렉션 - java.util.Map<K, V> 인터페이스 & 구현클래스 (0) | 2020.09.07 |
[TIL] 컬렉션 - java.util.Set<E> 인터페이스 & 구현 클래스 (0) | 2020.09.07 |
[TIL] 컬렉션 - java.util.Enumeration & Iterator (0) | 2020.09.07 |
댓글