โ 1. ์ปฌ๋ ์ (Collection)์ด๋?
- Collection ์์ฒด๋ ์์ด๋ก "์์ง๋ ๊ฒ, ๋ชจ์"์ ์๋ฏธํ๋ฉฐ, ํ๋ก๊ทธ๋๋ฐ ์ ๋ฐ์์ ๋ฐ์ดํฐ์ ๋ชจ์์ ํํํ ๋ ์์ฃผ ์ฐ์ธ๋ค.
- ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ๋ฌ ์์๋ฅผ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋ค.
- ์ฆ, ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ , ๊ด๋ฆฌ(๊ฒ์, ์ ๋ ฌ, ์ญ์ ๋ฑ) ํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ๋ค์ ์งํฉ์ ์๋ฏธํ๋ค.
- ์๋ฐ์์ JCF(Java Collections Framework)๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ธํฐํ์ด์ค์ ํด๋์ค๋ก ํด๋น ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค.
- ์๋ฐ ์ปฌ๋ ์ ์ ์ฃผ์ ์ธํฐํ์ด์ค๋ก๋ Collection, List, Set, Queue, Map ์ด ์๋ค
โ 2. JCF(Java Collections Framework) ๊ตฌ์กฐ
(1) JCF(Java Collections Framework) ์ธํฐํ์ด์ค
Set: ๋ฐ์ดํฐ์ ์์๊ฐ ์๊ณ , ์ค๋ณต ๋ฐ์ดํฐ์ ํ์ฉํ์ง ์๋ ์๋ฃ๊ตฌ์กฐ ( ์ฐธ๊ณ : ๋ด๋ถ์ ์ผ๋ก Map์ ์ด์ฉํจ )
List: ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ๊ณ ์์๊ฐ ์๋ ์๋ฃ๊ตฌ์กฐ
Queue: List์ ์ ์ฌํ๋ ์์์ ์ฝ์ /์ญ์ ๊ฐ FIFO ๋ฐฉ์
Map: ์์๊ฐ <key, value>์ ํํ์ด๋ฉฐ ์์๊ฐ ์์ผ๋ฉฐ, ํค๊ฐ์ ์ค๋ณต์ด ๋์ง์์ง๋ง value๋ ์ค๋ณต์ด ๋ ์ ์์.
(2) Map ์๋ฃ๊ตฌ์กฐ๊ฐ ๋ฐ๋ก ์๋๋ฐ ์ปฌ๋ ์ ์ ํฌํจ๋๋ ์ด์
- Collection์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์ ์ฅํ๋ ๊ตฌ์กฐ์ด๋ค. ex) add(E e) / remove(E e)
- Ma์ ํค-๊ฐ ์(key-value)์ ์ ์ฅํ๋ ๊ตฌ์กฐ์ด๋ค. ex) put(K, V), get(K) ๋ฑ
- ์ฆ, ๊ตฌ์กฐ์ ์ผ๋ก ์๋ฏธ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ธํฐํ์ด์ค๋ฅผ ๊ณตํ์ง ์์, Collection๊ณผ ๋จ์ด์ ธ ์๋ ๊ตฌ์กฐ์ด๋ค.
- ์๋ฐ ์ปฌ๋ ์ ํ๋ ์์ํฌ๋ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ํตํฉ๋ ๋ฐฉ์์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํ ์ ์ฒด ์ฒด๊ณ๋ฅผ ์๋ฏธํจ.
- ์ฆ, Collection ์ธํฐํ์ด์ค๋ง์ ์๋ฏธํ๋๊ฒ์ด ์๋ Map ๋ํ ์๋ฐ ์ปฌ๋ ์ ํ๋ ์์ํฌ๋ผ๊ณ ๋ณผ ์ ์์.
- ์๋ฃ๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ๋ชฉ์ ์ ๋์ผํ๊ธฐ ๋๋ฌธ์ ํ๋ ์์ํฌ์ ์ํ๊ฒ ๋๋ค๋ ์๋ฏธ์ด๋ค.
- ๊ณต์๋ฌธ์์์๋ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ํตํฉ๋ ๋ฐฉ์์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํ ์ ์ฒด ์ฒด๊ณ๋ผ๊ณ ๋ง์ ํ๊ณ ์์.
โ 3. Iterable & Iterator & ํฅ์๋ for๋ฌธ
- JCF ํ๋ ์์ํฌ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ์ ์ผ ์ต์์ ํด๋์ค๋ก Iterable์ด ์์.
- Iterable์ด ์ต์์์ธ ์ด์ ๋ ๋ฐ์์ ์ค๋ช ํจ.
(1) Iterable
public interface Iterable<T> {
Iterator<T> iterator();
}
- ์ปฌ๋ ์ ํ๋ ์์ํฌ์ ์ ์ผ ์ต์์ ์ธํฐํ์ด์ค๋ก, ํฅ์๋ for๋ฌธ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ์ธํฐํ์ด์ค์ด๋ค.
- ์ฆ, ์ปฌ๋ ์ ์ต์์์ธ ์ด์ ๋ ๊ทธ๋ฅ ๋จ์ํ ํฅ์๋ for๋ฌธ์ ์ง์ํด์ฃผ๊ธฐ ์ํด์ ์๋๊ฒ์.
(2) Iterator
public interface Iterator<E> {
boolean hasNext(); // ๋ค์ ์์๊ฐ ์๋์ง ํ์ธ
E next(); // ๋ค์ ์์ ๋ฐํ
void remove(); // (์ ํ์ ) ํ์ฌ ์์ ์ญ์
}
- ์ค์ ๋ก ์์๋ฅผ ํ๋์ฉ ๊บผ๋ด๋ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๋ ์ธํฐํ์ด์ค์ด๋ค.
- ์ค์ ๋ก ํฅ์๋ for๋ฌธ์ ํด๋น ์ธํฐํ์ด์ค์ ๋ฉ์๋๋ฅผ ํตํด ์ปดํ์ผ ์ดํ์ for๋ฌธ์ ์๋์ผ๋ก ๋ง๋ค์ด์ค๋ค.
(3) Iterable & Iterator ๋๋ ์ด์
- SOLID์ ๋จ์ผ ์ฑ ์ ์์น(SRP)์ ์งํค๊ธฐ ์ํด ์ธํฐํ์ด์ค๋ฅผ ๋๋ก ๋๋ ๊ฒ์ด๋ค.
- Iterable์ Iterator๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ณต์ฅ์ผ๋ก ๋ณผ ์ ์๋ค
- ํด๋น Iterable์ ๋ฐ๋์ ๊ตฌํํ๊ณ Iterator๋ฅผ ๊ตฌํํ์ฌ Iterable์ ํตํด Iterator๋ฅผ ์ฌ์ฉํจ์ ๊ฐ์ ํ๊ณ ์์.
- ํฅ์๋ for๋ฌธ์ ์ปดํ์ผ ๊ณผ์ ์์ iterator() ๋ฉ์๋๊ฐ ์์ผ๋ฉด ๋์ํ์ง ์๋๋ค.
- ๊ฒฐ๊ตญ์ ๋์ for๋ฌธ ๋ํผํด๋์ค๋ก ๋ณผ ์ ์๋ค. for๋ฌธ์ ํด๋์ค์ ๋ฉ์๋๋ก ๋ง๋ค์ด์ ๊ฐ์ฒด๋ก์จ ์ ๊ณต์ ํ๋ ๊ฐ๋ ์.
(4) ํฅ์๋ for๋ฌธ
import java.util.Iterator;
public class MyCollection implements Iterable<String> {
private String[] data = {"apple", "banana", "cherry"};
@Override
public Iterator<String> iterator() {
return new MyIterator();
}
private class MyIterator implements Iterator<String> {
private int index = 0;
@Override
public boolean hasNext() {
return index < data.length;
}
@Override
public String next() {
return data[index++];
}
}
public static void main(String[] args) {
MyCollection collection = new MyCollection();
// ํฅ์๋ for๋ฌธ ์ฌ์ฉ ๊ฐ๋ฅ
for (String item : collection) {
System.out.println(item);
}
}
}
- ๊ธฐ๋ณธ ๋ฐฐ์ด๊ณผ Iterable์ ๊ตฌํํ ํด๋์ค์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ for๋ฌธ์ด๋ค.
- ํด๋น ์ฝ๋์์ Iterable์ ๊ตฌํํ๋ฉด ๋ด๋ถ์ iterator() ์ถ์ ๋ฉ์๋๋ฅผ ๊ตฌํํ๊ฒ ๋๋ค.
- ํด๋น ์ถ์ ๋ฉ์๋๋ ๋ฐํํ์ ์ผ๋ก Iterator๋ฅผ ๋ฐํํ๊ณ ์์ด, Iterator๋ฅผ ๊ตฌํ์ ํด์ ๊ตฌํ ํด๋์ค๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ค.
- ๊ธฐ๋ณธ ๋ฐฐ์ด์ JVM์ด ๋ด๋ถ์ ์ผ๋ก ์๋์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ฉฐ, Iterable์ ์ง์ ๊ตฌํ์ ํด์ค์ผํจ.
- Iterable ๋ด๋ถ์ iterator() ๋ฉ์๋๋ฅผ ํตํด ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก for๋ฌธ์ ๋ง๋ค์ด์ฃผ๊ธฐ ๋๋ฌธ์ ์ธํฐํ์ด์ค ๊ตฌํ ํ์์.
(5) ํฅ์๋ for๋ฌธ ์ปดํ์ผ ๋ณํ
import java.util.Iterator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = List.of("a", "b", "c");
// ์ปดํ์ผ๋ฌ๊ฐ ๋ณํํ๋ ๊ตฌ์กฐ
for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
String item = iterator.next();
System.out.println(item);
}
}
}
- ํฅ์๋ for๋ฌธ์ ์ค์ ๋ก๋ ์กด์ฌํ์ง ์๋ ๋ ผ๋ฆฌ์ ์ธ ์ฝ๋์ด๋ฉฐ, ์ปดํ์ผ์ด ๋๋ฉด ๊ธฐ๋ณธ for๋ฌธ์ผ๋ก ๋ฐ๋๋ ๊ตฌ์กฐ์ด๋ค.
- ์ฆ๊ฐ์์ด ์๋ต๋ for๋ฌธ์ผ๋ก ํํ๋ฅผ ๋ง๋ค์ด์ next() ๋ฉ์๋๋ฅผ ํตํด ์ฆ๊ฐ์ด ๋๋ ๋ฐฉ์์ผ๋ก ๋ง๋ค์ด์ง๋ค.
(6) ๊ฒฐ๋ก : ํฅ์๋ for๋ฌธ์ Iterable / Iterator ํ์
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("one"); list.add("two"); list.add("three");
list.add("four"); list.add("five");
// ๋ฐฉ๋ฒ1 : for๋ฌธ์ ์ด์ฉํ๊ธฐ
for(Iterator<String> it = list.iterator(); it.hasNext();) {
String item = it.next();
System.out.println(item);
}
// ๋ฐฉ๋ฒ2 : while ์ด์ฉํ๊ธฐ
Iterator<String> it = list.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
- ๊ฒฐ๋ก ์ ํฅ์๋ for๋ฌธ์ด ์ปดํ์ผ ๋๋ฉด ํด๋น for๋ฌธ ํํ๋ก ๋ณ๊ฒฝ์ด ๋จ. ์ฆ, ๊ฐ๋ฐ์ ์นํ์ ์ผ๋ก ์ฝ๋๊ฐ ๋ง๋ค์ด์ ธ ์์.
โ 4. JCF์ ์ธํฐํ์ด์ค ๋ฐ ํด๋์ค
- java.util ํจํค์ง์ ํฌํจ๋๋ฉฐ ์ ๋ค๋ฆญ ํ์ ์ผ๋ก ๋ง๋ค์ด์ ธ ์๋ ํด๋์ค๋ค์ด๋ค.
- ์ธํฐํ์ด์ค๋ Set, List, Queue, Map์ด ์์ผ๋ฉฐ, ๊ตฌํ ํด๋์ค๋ ๋ค์ํ๊ฒ ์์.
- ๋ํ์ ์ธ ๊ตฌํ ํด๋์ค๋ HashSet, HashMap, ArrayList, LinkedList, TreeSet, TreeMap ๋ฑ์ด ์์.
(1) ์ปฌ๋ ์ ๊ฐ์ฒด์ ์ ์ธ
Set<Integer> set = new HashSet<>();
List<Integer> list = new ArrayList<>();
List<Integer> list = new LinkedList<>();
Queue<Integer> queue = new LinkedList<>();
Map<String, Integer> map = new HashMap<>();
- ์ ์ธ์ ๋ํ์ ์ผ๋ก ๋คํ์ฑ์ ํ์ฉํด ์ธํฐํ์ด์ค ํ์ ์ผ๋ก ๋ง๋ค๊ณ , ๊ตฌํ์ฒด๋ฅผ ์ํ๋ ๊ตฌํ์ฒด์ ๋ง๊ฒ ๋ฃ๋๋ค.
- ์ด์ ๋, ์ ์ง๋ณด์์ฑ, ์ ์ฐ์ฑ์ ํตํ ํ์ฅ์ฑ ๋ฑ ๋๋ฌธ์ ํด๋น ์ ์ธ ๋ฐฉ์์ ์ด์ฉํจ.
(2) Collection<E> ์ธํฐํ์ด์ค
- Set, List, Queue ์์ ๊ณตํต์ผ๋ก ์ง์ํด์ผ ํ๋ ๊ธฐ๋ฅ์ ์ ์ํด๋ ์ธํฐํ์ด์ค์ด๋ค.
โ 5. HashSet, ArrayList, LinkedList, HashMap ํด๋์ค
(1) HashSet<E>
public class Main {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("apple");
set.add("apple");
set.add("banana");
System.out.println(set); // [banana, apple] ๋๋ [apple, banana] ๋ฑ (์์ X, ์ค๋ณต ์ ๊ฑฐ๋จ)
// set.remove("apple"); ํน์ ์์ ์ง์ฐ๊ธฐ
// set.clear(); ํด๋น ๋ฐฐ์ด ์ ์ฒด ๋น์ฐ๊ธฐ
}
}
- ์ค๋ณต ๋ฐ์ดํฐ ์ ์ฅ์ ํ์ฉํ์ง ์๋๋ค. ์ฆ, ์ค๋ณต์ผ๋ก ์ ์ฅ๋ ๊ฐ์ด ์๋ค๋ฉด ์ค๋ณต ์ ์ฅ๋ ๊ฐ์ ๋ฌด์ํ๊ณ ํ๋๋ง ๋ฝ์.
- ๋ฐ์ดํฐ ์ ์ฅ ์์์ ๋ฐ๋ผ ์์ฐจ์ ์ผ๋ก ์ ์ฅํ์ง ์๊ณ , ๋ถ๊ท์น์ ์ผ๋ก ์ ์ฅ์ด ๋จ. ์ฆ, ์์ ๋ณด์ฅ์ด ๋์ง ์์.
- ๋ด๋ถ์ ์ผ๋ก HashMap์ ์ด์ฉํด์ ์ ์ฅํ๊ณ ์์. Map์ ํค๊ฐ์ ์ค๋ณต ์ ์ฅ์ด ์๋๋ฉฐ, ์์ ๋ณด์ฅ ๋ํ ์๋๋๋ฐ ๋งต์ ํค๋ฅผ ์ด์ฉํด์ ์ ์ฅํ๊ณ ์๊ธฐ ๋๋ฌธ์ Map์ ํน์ฑ์ธ ํด์ํ ์ด๋ธ ํํ๋ก ๊ฐ์ด ์ ์ฅ์ด ๋๋ค. ( ๊ฑ Map์ ์ฐ๊ณ ์์ )
- ๋ฐฉ์์ Map์ key๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ , value์๋ ๋๋ฏธ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๋ฐฉ์์ ์ด์ฉํ๊ณ ์์.
- ์ฆ, set์ map์ ํค๊ฐ๋ง ์ด์ฉํ ์๋ฃ๊ตฌ์กฐ๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ.
(2) ArrayList<E>
// ์ฅ์ - ์กฐํ์ ๋งค์ฐ ๋น ๋ฆ
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
System.out.println("Second item: " + list.get(1)); // O(1) - ๋งค์ฐ ๋น ๋ฆ
// ๋จ์ - ์ค๊ฐ ์ฝ์
/์ญ์ ์ ๋๋ฆผ ---------
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < 100000; i++) {
list.add("Item " + i);
}
list.add(50000, "Inserted Item"); // O(n) - ๋ฆฌ์คํธ ์ค๊ฐ์ ์ฝ์
-> ๋ง์ ์์๊ฐ ๋ค๋ก ๋ฐ๋ ค๋จ
- List ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์ด๋ค.
- ์ค๋ณต ๋ฐ์ดํฐ ์ ์ฅ์ ํ์ฉํ๋ฉฐ, ์ ์ฅ ๋ ์์์ ๋ง๊ฒ ์์ฐจ์ ์ผ๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฌ๋ฉด ์์๋๋ก ๋์ด
- ๊ฒ์์๋ ๋น ๋ฅด์ง๋ง, ์ค๊ฐ์ ์ฝ์ ๊ณผ ์ญ์ ์๋ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์์.
- ์ด์ ๋, ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ์ด ๋์ด์์ด์, ์ธ๋ฑ์ค๋ก ๋น ๋ฅด๊ฒ ์ ๊ทผ์ด ๊ฐ๋ฅํด ๊ฒ์์๋ ๋น ๋ฆ
- ํ์ง๋ง, ์ค๊ฐ์ ์ฝ์ ํ๋ ๊ณผ์ ์์ ์ฝ์ ์์น ๋ค์ ๋ชจ๋ ์์๋ฅผ ํ๋์ฉ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ฆผ.
- ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์ฆ์ ๊ฒฝ์ฐ์๋ LinkedList๊ฐ ๋ ์ ๋ฆฌํจ. ๋์ ์ ๊ทผ์ ๋๋ฆผ.
(3) LinkedList<E> - List & Queue ๊ตฌํ ํด๋์ค
LinkedList<String> list = new LinkedList<>();
// ์์ ์ถ๊ฐ
list.add("Apple");
list.add("Banana");
list.add("Cherry");
list.addFirst("Mango"); // ๋งจ ์์ ์์ ์ถ๊ฐ
list.addLast("Orange"); // ๋งจ ๋ค์ ์์ ์ถ๊ฐ
System.out.println("LinkedList ๋ด์ฉ: " + list); // ์์ ์ถ๋ ฅ
System.out.println("์ฒซ ๋ฒ์งธ ์์: " + list.getFirst()); // ์ฒซ ๋ฒ์งธ ์์ ๊ฐ์ ธ์ค๊ธฐ
System.out.println("๋ง์ง๋ง ์์: " + list.getLast()); // ๋ง์ง๋ง ์์ ๊ฐ์ ธ์ค๊ธฐ
list.remove("Banana"); // ํน์ ์์ ์ญ์
System.out.println("Banana ์ ๊ฑฐ ํ: " + list);
// ๋ฆฌ์คํธ ์ํ
System.out.println("๋ฆฌ์คํธ ์ํ:");
for (String fruit : list) {
System.out.println(fruit);
}
- ๋ฐ์ดํฐ์ ๋ค์ ๋ฐ์ดํฐ์ ์์น(์ฐธ์กฐ)๋ฅผ ํจ๊ป ์ ์ฅํ๋ ๋ ธ๋๋ค์ด ์ฐ๊ฒฐ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋ค.
- ๊ฐ ๋ ธ๋๋ ๋ฐ์ดํฐ, ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋๋ค.
- ๋ ธ๋๋ค์ด ํ์ดํ(๋งํฌ)๋ก ์ฐ๊ฒฐ๋์ด ์์ด์, ํ ๋ ธ๋์์ ๋ค์ ๋ ธ๋๋ก ์ด๋ํ๋ ๋ฐฉ์์ด๋ค.
- ๋ฐฐ์ด๊ณผ ๋ค๋ฅด๊ฒ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฐ์์ ์ผ๋ก ์์ง ์์๋ ๋์ด ๋์ ํ ๋น์ด ๊ฐ๋ฅํจ.
- ์ฅ์ : ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ฑฐ๋ ๋นผ๋ ค๋ฉด ์์๋ฅผ ์ด๋์ํค์ง ์์๋ ๋์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๋น ๋ฆ
- ๋จ์ : ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ์ง๋ง, ๋งํฌ๋ ๋ฆฌ์คํธ๋ ์ฒ์๋ถํฐ ์ฐจ๋ก๋ก ๋ ธ๋๋ฅผ ๋ฐ๋ผ๊ฐ์ผ ํจ. ์์ ์ ๊ทผ ๋๋ฆผ.
- Queue ์ธํฐํ์ด์ค ๋ํ ๊ฐ์ด ๊ตฌํํ๊ณ ์๋ ํด๋์ค์ด๋ค. ์ฆ, queue ๋ฉ์๋๋ฅผ ์ด์ฉํด์ queue๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํจ.
(4) HashMap<K, V>
Map<String, Integer> map = new HashMap<>(); // key, value ๋ก ์ ์ฅ
// ์ฝ์
map.put("apple", 100);
map.put("banana", 200);
// ์กฐํ
int applePrice = map.get("apple");
System.out.println("apple์ ๊ฐ๊ฒฉ์ " + applePrice + "์์
๋๋ค.");
- Map<K, V> ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์ด๋ฉฐ, key, value๋ก ์ด๋ฃจ์ด์ง ์์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํจ.
- key๋ ์ค๋ณต์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ, ํ๋์ key์ ํ๋์ value๋ง ๋ฃ์ ์ ์์.
- ํด๋น key, value ์ฌ๋ฌ ์๋ค์ ์์๋ฅผ ๋ณด์ฅํ์ง ์์.
- ํด์ฑ์ ์ด์ฉํ์ฌ Map ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์ด๋ค.
- ์๋ฃ ํ์ ๋ฐฉ๋ฒ์ด ArrayList, LinkedList ์๋ ์ ํ ๋ค๋ฆ. ์ฆ, Collection๊ณผ ๋จ์ด์ ธ ์์.
'๐ ๏ธBackend > โJava' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋ฉํฐ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ (2) | 2025.06.04 |
---|---|
[Java] ์๋ฐ ์คํธ๋ฆผ(Stream) ๊ฐ๋ + ์์ ์ด์ ๋ฆฌ ๐ (2) | 2025.06.03 |
[Java] java.nio ์ฌ์ฉ๋ฒ | Path, Files, FileChannel ์์ ๋ชจ์ (3) | 2025.05.30 |
[Java] java.io ํจํค์ง ์ ์ถ๋ ฅ ์คํธ๋ฆผ ์ฝ๊ฒ ์ดํดํ๊ธฐ (2) | 2025.05.28 |
[Java] java.lang ํจํค์ง ์ ๋ฆฌ: Object, String, Math ํด๋์ค ์ด์ ๋ฆฌ (0) | 2025.05.26 |