๐ป/JAVA
[Java] 17์ผ์ฐจ : ์ปฌ๋ ์
(Collection) - 4
by ๋ฐ๊ถ
2024. 3. 11.
Queue<E> ์ธํฐํ์ด์ค
- ํ(Queue)๋ ์ ์
์ ์ถ ๊ตฌ์กฐ๋ก ๋จผ์ ์
๋ ฅ๋ ์๋ฃ๋ฅผ ๋จผ์ ์ถ๋ ฅํ๋ ์๋ฃ๊ตฌ์กฐ
- Queue ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ ํ์ ๊ด๋ จ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ์ค๋ณต์ ์ธ ์์๋ฅผ ์ ์ฅ ํ ์ ์๋ค.
- Queue<String>que = new LinkedList<>();
- Deque ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ArrayDeque ํด๋์ค๋ ์คํ ๋ฐ ํ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ ๊ตฌํํ ํด๋์ค๋ก, Stack ํด๋์ค๋ ๋ผ๋fmf rngusgks LinkedList ํด๋์ค ๋ณด๋ค ์๋๊ฐ ๋น ๋ฅด๋ค.
PriorityQueue<E> ํด๋์ค
- ์ผ๋ฐ์ ์ธ ํ๋ FIFO ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง PriorityQueue(์ฐ์ ์์ ํ)๋ ์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํ์ฌ ๋ค์ด์จ ์์์ ์๊ด์์ด ๊ทธ ์ฐ์ ์์๊ฐ ๋์ ์๋ฆฌ๋จผํธ๋ฅผ ๋จผ์ ์ถ๋ ฅํ๋ ํ์ด๋ค.
package ch11.unit06;
import java.util.LinkedList;
import java.util.Queue;
public class Ex01 {
public static void main(String[] args) {
Queue<String> q = new LinkedList<String>();
q.offer("์๋ฐ");
q.offer("์ค๋ผํด");
q.offer("HTML");
q.offer("์๋ธ๋ฆฟ");
System.out.println(q);
// peek() : head ๋ฐํ, ์์ผ๋ฉด null
// poll() : head ๋ฐํํ ์ญ์
while(q.peek() != null) {
String s = q.poll();
System.out.println(s);
}
System.out.println();
}
}
package ch11.unit06;
import java.util.concurrent.PriorityBlockingQueue;
public class Ex02 {
public static void main(String[] args) {
//์ฐ์ ์์ ํ : Comparable ๊ตฌํ ํด๋์ค๋ง ๊ฐ๋ฅ
//๋จผ์ ์์ฑ๋ ํฌ์ธํฐ ์ฌ์ฉ ๋ฑ์์ ์ด์ฉ
PriorityBlockingQueue<String> q = new PriorityBlockingQueue<String>();
q.offer("์๋ฐ");
q.offer("์ค๋ผํด");
q.offer("HTML");
q.offer("์๋ธ๋ฆฟ");
System.out.println(q);
// peek() : head ๋ฐํ, ์์ผ๋ฉด null
// poll() : head ๋ฐํํ ์ญ์
while(q.peek() != null) {
String s = q.poll();
System.out.println(s);
}
System.out.println();
}
}
Collections ํด๋์ค
- ์ปฌ๋ ์
์ ํจ์จ์ ์ธ ๊ด๋ฆฌ๋ฅผ ์ํด ์ ๊ณต๋๋ ํด๋์ค
- ์ ๋ ฌ,๊ฒ์,์๊ธฐ ๋ฑ์ ๊ธฐ๋ฅ์ ์ํํ๋ ํด๋์ค ๋ฉ์๋๋ฅผ ์ ๊ณต
- ์ด ํด๋์ค์ ๋ฉ์๋์ ์ ๊ณต๋๋ ์ปฌ๋ ์
๋๋ ํด๋์ค ๊ฐ์ฒด๊ฐ null์ ๊ฒฝ์ฐ, NullPointerException ์์ธ ๋ฐ์
Comparable<T> ์ธํฐํ์ด์ค
- ๊ฐ์ฒด๋ฅผ ์ ๋ ฌํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ฉ์๋์ธ compareTO() ๋ฉ์๋๋ฅผ ์ ์ํ๊ณ ์๋ค.
- ์๋ฐ๋ ๊ฐ์ ํ์
์ ์ธ์คํด์ค๋ฅผ ์๋ก ๋น๊ตํด์ผ ํ๋ ํด๋์ค๋ค์ ๋ชจ๋ Comparable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์๋ค.
- Comparable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ Collections.sort()๋ฉ์๋๋ Arrays.sort()์ ์ํด์ ์ ๋ ฌํ ์ ์๋ค.
- Comparable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ Collections.binarySearch() ๋ฉ์๋๋ก ๊ฒ์ ๊ฐ๋ฅํ๋ค.
- Comparable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ TreeSet ์์๋ก ์ ์ฅ ๊ฐ๋ฅํ๋ฉฐ, TreeMapํด๋์ค์ ํค๋ก ์ฌ์ฉ ํ ์ ์๋ค.
Comparator<T> ์ธํฐํ์ด์ค
- Comparator ์ธํฐํ์ด์ค๋ Comparable ์ธํฐํ์ด์ค์ ๊ฐ์ด ๊ฐ์ฒด๋ฅผ ์ ๋ ฌํ๋๋ฐ ์ฌ์ฉ๋๋ ์ธํฐํ์ด์ค
- Comparator ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์์๋ compare() ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ์ฌ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ค.
- Comparable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ง ์์ List์ ์์๋ฅผ Collections.sort() ๋ฉ์๋๋ก ์ ๋ ฌํ๊ธฐ ์ํด์๋ sort(List<T>list, Comparator<? super T>c)์ ๋๋ฒ์งธ ์ธ์์ Comparator๋ฅผ ๊ตฌํํ์ฌ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ง์ ํด ์ฃผ์ด์ผ ํ๋ค.
package ch11.unit06;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Ex03_Sort {
public static void main(String[] args) {
List<User3> list = new ArrayList<User3>();
list.add(new User3("ํ๊ธธ๋", 23));
list.add(new User3("์ด๊ธฐ์", 24));
list.add(new User3("๊น์๋ฐ", 22));
list.add(new User3("๋ค์๋ฐ", 23));
list.add(new User3("๋์๋ฐ", 21));
Collections.sort(list);
for(User3 vo : list) {
System.out.println(vo.getName()+": "+vo.getAge());
}
}
}
class User3 implements Comparable<User3>{
private String name;
private int age;
public User3() {
}
public User3(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;
}
// compareTo():Comparble ๋ฉ์๋๋ก ์ ๋ ฌ ๊ธฐ์ค์ ์ค์ ํ๋ค.
@Override
public int compareTo(User3 o) {
//return name.compareTo(o.getName()); // ์ด๋ฆ ์ค๋ฆ์ฐจ
//return -name.compareTo(o.getName()); // ์ด๋ฆ ๋ด๋ฆผ์ฐจ
//return age - o.getAge(); // ๋์ด ์ค๋ฆ์ฐจ์
return -(age - o.getAge()); // ๋์ด ๋ด๋ฆผ์ฐจ์
}
}
package ch11.unit06;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Ex03 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("java");
list.add("spring");
list.add("html");
list.add("css");
list.add("javascript");
System.out.println(list);
Collections.shuffle(list);
System.out.println(list);
}
}
package ch11.unit07;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Ex02 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("์์ธ");
list.add("๋ถ์ฐ");
list.add("๋๊ตฌ");
list.add("์ธ์ฒ");
list.add("๊ด์ฃผ");
list.add("๋์ ");
list.add("์ธ์ฐ");
list.add("์ธ์ข
");
System.out.println(list);
Collections.sort(list);
System.out.println(list);
//์ด๋ถ๊ฒ์(์ ๋ ฌ๋์ด ์์ด์ผ ๊ฐ๋ฅ)
int n = Collections.binarySearch(list, "์์ธ");
System.out.println("์์ธ์์น:"+n);
Collections.sort(list, Collections.reverseOrder());
System.out.println(list);
}
}
'๐ป > JAVA' ์นดํ
๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ