List Set Map
JavaCollection Framework
Java Collection Framework๋ ๊ฐ์ฒด์ ๊ทธ๋ฃน์ ์ ์ฅํ๊ณ ์กฐ์ํ๊ธฐ ์ํ ํ์ค ์ํคํ ์ฒ๋ฅผ ์ ๊ณตํ๋ค. ์ด ํ๋ ์์ํฌ๋ ๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ(List, Set, Map)์ ์๊ณ ๋ฆฌ์ฆ(์ ๋ ฌ, ๊ฒ์ ๋ฑ)์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋์์ค๋ค.
ํ๋ ์์ํฌ์ ํฐ ํน์ง ์ค ํ๋๋ Generics์ ํ์ฉ์ด๋ค. ์ปฌ๋ ์ ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํจ์ผ๋ก์จ, ์๋ชป๋ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ฒ๋ฆฌํ ๋ ๋ฐ์ํ ์ ์๋ ์ค๋ฅ๋ฅผ ์ปดํ์ผ ํ์์ ๋ฐฉ์งํ ์ ์๋ค.
์ฌ์ค ํ์๋ Generics๋ฅผ ์ดํดํ๊ธฐ ์ํด Collection์ ์ ๋ฆฌํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ค. ์ด์ Java Collection Framework์ ํต์ฌ ์ธํฐํ์ด์ค์ธ List, Set, Map์ ๋ํด ์์๋ณด๋๋ก ํ์.
1. List: ์์๊ฐ ์๋ ์ปฌ๋ ์
List๋ ์์๋ค์ด ์์๋๋ก ์ ์ฅ๋๋ ์ปฌ๋ ์ ์ด๋ค. ๊ฐ ์์๋ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ์ค๋ณต๋ ์์๋ฅผ ํ์ฉํ๋ค,.
List์ ๋ํ ๊ตฌํ ํด๋์ค์ ArrayList์ LinkedList๊ฐ ์๋ค.
List์ ๋ํ ๊ตฌํ ํด๋์ค: ArrayList
- `ArrayList`๋ ๊ฐ๋ณ ํฌ๊ธฐ ๋ฐฐ์ด์ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ฆฌ์คํธ์ด๋ค. ์ธ๋ฑ์ค๋ฅผ ํตํ ์์ ์ ๊ทผ์ด ๋น ๋ฅด๊ณ , ์์ฐจ์ ์ผ๋ก ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ฝ๋ ์์ ์ ์ ํฉํ๋ค.
- ์ฅ์ : ์ธ๋ฑ์ค๋ฅผ ํตํ ๋น ๋ฅธ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฉฐ, ์์์ ์ถ๊ฐ๋ ๋น ๋ฅด๋ค.
- ๋จ์ : ์ค๊ฐ์ ์์๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค. (๋ค์ ๋ชจ๋ ์์๊ฐ ์ด๋ํด์ผ ํ๋ฏ๋ก)
์์์ฝ๋
List<Stinrg> arrayList = new ArrayList<>();
arrayList.add("Apple");
arrayList.get(0); // ๋น ๋ฅธ ์ธ๋ฑ์ค ์ ๊ทผ
List์ ๋ํ ๊ตฌํ ํด๋์ค: LinkedList
- `LinkedList`๋ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๊ตฌํ๋ ๋ฆฌ์คํธ์ด๋ค. ๊ฐ ์์๋ ๋ค์ ์์์ ์ด์ ์์๋ฅผ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๋ค.
- ์ฅ์ : ์ค๊ฐ์ ์ฝ์ /์ญ์ ํ๋ ์์ ์ด ๋น ๋ฅด๋ค. (ํฌ์ธํฐ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๊ธฐ ๋๋ฌธ)
- ๋จ์ : ์ธ๋ฑ์ค๋ฅผ ํตํ ์ ๊ทผ ์๋๊ฐ ๋๋ฆฌ๋ค. (์ฒ์๋ถํฐ ์์ฐจ์ ์ผ๋ก ํ์ํด์ผ ํ๋ฏ๋ก)
์์ ์ฝ๋
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("Banana");
linkedList.addFirst("Apple"); // ์ฒซ ๋ฒ์งธ ์์ ์ถ๊ฐ
linkedList.remove(1); // ์ค๊ฐ ์ญ์ ๊ฐ ๋น ๋ฆ
Generics์ List:
Generics๋ฅผ ์ฌ์ฉํ๋ฉด List์ ์ ์ฅํ ์์์ ํ์ ์ ๋ช ํํ ์ง์ ํ ์ ์๋ค. ์ด๋ฅผ ํตํด ํ์ ์์ ์ฑ์ ํ๋ณดํ ์ ์๋ค.
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
// ์๋ชป๋ ํ์
์ ์ถ๊ฐํ๋ ค๊ณ ํ๋ฉด ์ปดํ์ผ ์ค๋ฅ ๋ฐ์
// names.add(123);
String firstName = names.get(0); // "Alice" ๋ฐํ, ํ์
์บ์คํ
ํ์ ์์
2. Set: ์ค๋ณต์ ํ์ฉํ์ง์๋ ์ปฌ๋ ์
Set์ ์ค๋ณต์ ํ์ฉํ์ง ์๋ ์์๋ค์ ์งํฉ์ด๋ค. List์ ๋ฌ๋ฆฌ ์์๊ฐ ์ ์ง๋์ง ์๊ฑฐ๋(์ผ๋ถ ๊ตฌํ์ฒด๋ ์์๋ฅผ ์ ์ง), ์์๋ค์ด ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅ๋๋ค.
Set์ ๋ํ ๊ตฌํ ํด๋์ค: HashSet
- `HashSet`์ ํด์ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์งํฉ(Set)์ด๋ค. ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ , ์์์ ์์๋ ๋ณด์ฅ๋์ง ์๋๋ค.
- ์ฅ์ : ๋ฐ์ดํฐ ๊ฒ์๊ณผ ์ฝ์ ์ด ๋น ๋ฅด๋ค. (ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ)
- ๋จ์ : ์์์ ์์๋ฅผ ์ ์งํ์ง ์์.
์์ ์ฝ๋
HashSet<String> hashSet = new HashSet<>();
hashSet.add("Apple");
hashSet.add("Banana");
// ์ค๋ณต ํ์ฉํ์ง ์์
Set์ ๋ํ ๊ตฌํ ํด๋์ค:LinkedHashSet
- `LinkedHashSet`์ HashSet๊ณผ ๋ฌ๋ฆฌ, ์์๊ฐ ์ถ๊ฐ๋ ์์๋ฅผ ์ ์งํ๋ ์งํฉ์ด๋ค. ๋ด๋ถ์ ์ผ๋ก ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ์ ์งํ๋ค.
- ์ฅ์ : ์์์ ์ฝ์ ์์๋ฅผ ์ ์งํ๋ฉด์๋ `HashSet`๊ณผ ์ ์ฌํ ๋น ๋ฅธ ๊ฒ์ ์ฑ๋ฅ์ ๊ฐ์ง๋ค.
- ๋จ์ : ์์๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ `HashSet`๋ณด๋ค ์ฝ๊ฐ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
์์ ์ฝ๋
LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add("Apple");
linkedHashSet.add("Banana");
// ์ฝ์
์์๊ฐ ์ ์ง๋จ
Set์ ๋ํ ๊ตฌํ ํด๋์ค: TreeSet
- `TreeSet`์ ์ด์ง ํ์ ํธ๋ฆฌ(Balanced Tree)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์งํฉ์ด๋ค. ์๋์ผ๋ก ์ ๋ ฌ๋ ์ํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
- ์ฅ์ : ์์๊ฐ ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅ๋๋ฏ๋ก, ๋ฒ์ ๊ฒ์์ด๋ ์ ๋ ฌ์ด ํ์ํ ๋ ์ ์ฉํ๋ค.
- ๋จ์ : ํด์ ํ ์ด๋ธ ์ฌ์ฉํ๋ `HashSet` ๋ณด๋ค ๊ฒ์๊ณผ ์ฝ์ ์๋๊ฐ ๋๋ฆผ.
์์ ์ฝ๋
TreeSet<String> treeSet = new TreeSet<>();
treeSet.add("Banana");
treeSet.add("Apple");
treeSet.add("Orange");
// ์๋์ผ๋ก ์ ๋ ฌ๋จ: [Apple, Banana, Orange]
Generics์ Set:
Generics๋ฅผ ์ฌ์ฉํ๋ฉด Set์ ์ด๋ค ํ์ ์ ์์๊ฐ ์ ์ฅ๋ ์ง ๋ช ์ํ ์ ์์ด ํ์ ์์ ์ฑ์ ๋ณด์ฅํ๋ค.
Set<Integer> numbers = new HashSet<>();
numbers.add(10);
numbers.add(20);
numbers.add(10); // ์ค๋ณต๋ ๊ฐ์ ์ถ๊ฐ๋์ง ์์.
System.out.println(numbers); // [10, 20]
3. Map: ํค-๊ฐ ์์ผ๋ก ์ ์ฅํ๋ ์ปฌ๋ ์
Map์ ํค-๊ฐ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ปฌ๋ ์ ์ด๋ค. ๊ฐ ํค๋ ๊ณ ์ ํ๋ฉฐ, ๊ทธ ํค์ ์ฐ๊ฒฐ๋ ๊ฐ๋ง ์ ์ฅํ ์ ์๋ค. ํค๋ ์ค๋ณต์ ํ์ฉํ์ง ์์ง๋ง, ๊ฐ์ ์ค๋ณต ๋ ์ ์๋ค.
Map์ ๋ํ ๊ตฌํ ํด๋์ค: HashMap
- `HashMap`์ ํด์ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ ํค-๊ฐ ์์ผ๋ก ์ ์ฅํ๋ ๋งต์ด๋ค. ํค์ ์์๊ฐ ๋ณด์ฅ๋์ง ์์ผ๋ฉฐ, ์ค๋ณต๋ ํค๋ฅผ ํ์ฉํ์ง ์๋๋ค.
- ์ฅ์ : ํค์ ๊ฐ์ ๊ฒ์/์ฝ์ ์ด ๋งค์ฐ ๋น ๋ฅด๋ค.
- ๋จ์ : ์์๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค. ์ฝ์ ๋ ์์๊ฐ ํ์ํ๋ฉด ๋ค๋ฅธ Map์ ์ฌ์ฉํด์ผ ํ๋ค.
์์ ์ฝ๋
HashMap<String, Integer> HashMap = new HashMap<>();
hashMap.put("John", 25);
hashMap.put("Jane", 30);
Map์ ๋ํ ๊ตฌํ ํด๋์ค: LinkedHashMap
- `LinkedHashMap`์ HashMap๊ณผ ๋์ผํ๊ฒ ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํ์ง๋ง, ์ฝ์ ๋ ์์๋ฅผ ์ ์งํ๋ค. ๋ด๋ถ์ ์ผ๋ก ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ๊ด๋ฆฌํ๋ค.
- ์ฅ์ : ํค์ ๊ฐ์ด ์ฝ์ ์์๋ฅผ ์ ์งํ๋ฉด์๋ `HashMap`์ ๋น ๋ฅธ ๊ฒ์ ์ฑ๋ฅ์ ๊ฐ์ง๋ค.
- ๋จ์ : ์์๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ `HashMap`๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ ํฌ๋ค.
์์ ์ฝ๋
LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("John", 25);
linkedHashMap.put("Jane", 30);
// ์ฝ์
๋ ์์๊ฐ ์ ์ง๋จ
Map์ ๋ํ ๊ตฌํ ํด๋์ค: TreeMap
- `TreeMap`์ ์ด์ง ํ์ ํธ๋ฆฌ(Red-Black Tree)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ๋ ฌ๋ ๋งต์ด๋ค. ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋์ผ๋ก ์ ๋ ฌ๋๋ค.
- ์ฅ์ : ์ ๋ ฌ๋ ์ํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ํ์ํ ์ ์๋ค.
- ๋จ์ : ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํ๋ `HashMap`์ ๋นํด ๊ฒ์/์ฝ์ ์๋๊ฐ ๋๋ฆผ.
์์ ์ฝ๋
TreeMap<String, Integer> treeMap = new TreeMap<>();
treeMap.put("John", 25);
treeMap.put("Jane", 30);
treeMap.put("Alice", 22);
// ํค ๊ธฐ์ค์ผ๋ก ์๋์ผ๋ก ์ ๋ ฌ๋จ: [Alice, Jane, John]
Generics์ Map:
Generics๋ฅผ ์ฌ์ฉํ๋ฉด Map์ ํค์ ๊ฐ์ ํ์ ์ ์ง์ ํ์ฌ, ํ์ ์์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ํ ์ ์๋ค.
Map<String, Integer> scoreMap = new HashMap<>();
scoreMap.put("Alice", 90);
socreMap.put("Bob", 85);
// ์๋ชป๋ ํ์
์ ์ถ๊ฐํ๋ ค ํ๋ฉด ์ปดํ์ผ ์ค๋ฅ ๋ฐ์
// scoreMap.put(123, "Invalid");
System.out.println(ScoreMap.get("Alice")); // 90
์์ฝํ
List | ArrayList | ๊ฐ๋ณ ํฌ๊ธฐ ๋ฐฐ์ด, ์ธ๋ฑ์ค ์ ๊ทผ ๊ฐ๋ฅ | ๋น ๋ฅธ ์์ ์ ๊ทผ (O(1)), ์์ฐจ์ ์ฝ์ /์ญ์ ํจ์จ์ | ์ค๊ฐ ์ฝ์ /์ญ์ ๊ฐ ๋๋ฆผ |
LinkedList | ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์์ฐจ ํ์ ํ์ | ๋น ๋ฅธ ์ค๊ฐ ์ฝ์ /์ญ์ | ์ธ๋ฑ์ค ์ ๊ทผ ๋๋ฆผ (O(n)) | |
Set | HashSet | ์์ ์๋ ์งํฉ, ์ค๋ณต ํ์ฉ ์ํจ | ๋น ๋ฅธ ์ฝ์ /์ญ์ , ๊ฒ์ (O(1)) | ์์ ๋ณด์ฅ ์๋จ |
LinkedHashSet | ์์๊ฐ ์ ์ง๋๋ ์งํฉ, ์ค๋ณต ํ์ฉ ์ํจ | ์ฝ์ ์์ ์ ์ง, ๋น ๋ฅธ ๊ฒ์ | ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ๋ง์ | |
TreeSet | ์๋ ์ ๋ ฌ๋๋ ์งํฉ, ์ค๋ณต ํ์ฉ ์ํจ | ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅ, ๋ฒ์ ํ์ ๊ฐ๋ฅ | ์ฝ์ /์ญ์ , ๊ฒ์์ด ๋๋ฆผ (O(log n)) | |
Map | HashMap | ์์ ์๋ ํค-๊ฐ ์, ์ค๋ณต ํค ํ์ฉ ์ํจ | ๋น ๋ฅธ ๊ฒ์/์ฝ์ (O(1)) | ์์ ๋ณด์ฅ ์๋จ |
LinkedHashMap | ์์๊ฐ ์ ์ง๋๋ ํค-๊ฐ ์ | ์ฝ์ ์์ ์ ์ง, ๋น ๋ฅธ ๊ฒ์/์ฝ์ | ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ๋ง์ | |
TreeMap | ์๋ ์ ๋ ฌ๋๋ ํค-๊ฐ ์ | ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅ, ๋ฒ์ ๊ฒ์ ๊ฐ๋ฅ | ์ฝ์ /์ญ์ , ๊ฒ์์ด ๋๋ฆผ (O(log n)) |
โน๏ธ์ฐธ๊ณ
https://bangu4.tistory.com/194
[Java] Java Collection ๊ตฌ์กฐ ์ ๋ฆฌ
์๋ฐ์ Collection ์๋ฃ๊ตฌ์กฐ ์๋ฐ์์ ์ฌ์ฉํ๋ ์ปฌ๋ ์ ํ๋ ์์ํฌ์ ์ฃผ์ ํด๋์คํ์ด๋ค. ์ข๋ ์์ธํ ํด๋์ค์ ๊ตฌํ ์ธํฐํ์ด์ค๋ ์๋์ ๊ฐ๋ค 1. Collection Interface Iterator ์ธํฐํ์ด์ค๋ฅผ ์์ํ Colle
bangu4.tistory.com
'๐ปDEV-STUDY > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Interface / Abstract Class (1) | 2024.10.01 |
---|---|
[Java] Final๊ณผ Static (2) | 2024.09.30 |
[Java] ๊ฐ์ฒด ์์ฑํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ (0) | 2024.09.25 |
[Java] JVM (Java Virtual Machine) (3) | 2024.09.25 |
[Java] Exception ์์ธ์ฒ๋ฆฌ (0) | 2024.09.25 |