
Iterator, ListIterator, Enumeration
โถ ์ปฌ๋ ์ ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋๋ฐ ์ฌ์ฉ๋๋ ์ธํฐํ์ด์ค
โถ Enumeration์ Iterator์ ๊ตฌ๋ฒ์
โถ ListIterator๋ Iterator์ ์ ๊ทผ์ฑ์ ํฅ์์ํจ ๊ฒ (๋จ๋ฐฉํฅ → ์๋ฐฉํฅ)
- ListIterator๊ณผ Enumeration์ ์ ์ฌ์ฉํ์ง ์๋๋ค. ( ListIterator์ List์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ปฌ๋ ์ ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ )

Iterator์ ์ฌ์ฉํ๋ ์ด์ ๋ ์ปฌ๋ ์ ์ ์ ์ฅ๋ ์์๋ค์ ์ฝ์ด์ค๋ ๋ฐฉ๋ฒ์ ํ์คํํ์๊ธฐ ๋๋ฌธ์ด๋ค.
List๋ Map์ด๋ Set์ ํ์ธํ๊ณ ์ฝ์ด์ค๋ ๋ฐฉ๋ฒ์ด ์ ๊ฐ๊ฐ์ด๋ค.
๊ทธ๋ฌํ๊ฒ์ Iterator์ธํฐํ์ด์ค๋ฅผ ํตํ์ฌ ์ฝ์ด์ค๊ณ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ํ๋๋ก ํต์ผํ ๊ฒ์ด๋ค.

์ ์ฝ๋์ฒ๋ผ Iterator() ๋ฉ์๋๋ฅผ ํตํด Iterator์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
์์ฑ๋ ๊ฐ์ฒด๋ก ์ ์ฝ๋์ฒ๋ผ while๋ฌธ์ ์ฌ์ฉํ ๊ฒฝ์ฐ, list์ ๋ด์ฉ์ด ํ๋์ฉ ์ถ๋ ฅ๋๋ค.
Iterator๋ Collection์ธํฐํ์ด์ค์ ์ ์๋์ด ์๊ธฐ ๋๋ฌธ์ List๋ฅผ ์ฌ์ฉํ๋ Set์ ์ฌ์ฉํ๋ Iterator์ ์ฌ์ฉํ๋ฉด
์ฝ๋์ ๋ณ๊ฒฝ ์์ด ์ง์์ ์ธ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
Map๊ณผ Iterator
Map์๋ iterator()๊ฐ ์๋ค. ์์์๋ ๋งํ๋ค์ํผ Iterator์ Collection์ ์ ์๋์ด์๋ค.
๊ทธ๋ ๊ธฐ์ Collection์ธํฐํ์ด์ค์ ์์์ธ List์ Set์ iterator() ๋ฉ์๋๋ฅผ ํตํด์ Iterator ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
ํ์ง๋ง Map์ Collection์ธํฐํ์ด์ค์ ์์์ด ์๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก Map์ผ๋ก Iterator ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ keySet(), entrySet(), values()๋ฅผ ํธ์ถํด์ผ ํ๋ค.
์ 3๊ฐ์ ๋ฉ์๋๋ ๋ฐํ ํ์ ์ด Set๊ณผ collection์ด๊ธฐ์ iterator() ๋ฉ์๋๋ฅผ ํฌํจํ๊ณ ์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฐํ ํ์ ์ Set์ด๋ collection์ผ๋ก ๋ณ๊ฒฝํด์ค ๋ค์ iterator()์ ์ฌ์ฉํ๋ฉด ๋๋ค.

์ Iterator it = map.entrySet().iterator(); ์ ๋ค์ ์ฝ๋์ ๊ฐ๋ค.

Arrays
Arraysํด๋์ค๋ ๋ฐฐ์ด์ ๋ค๋ฃจ๊ธฐ ํธ๋ฆฌํ static๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
1. ๋ฐฐ์ด์ ์ถ๋ ฅ - toString()

toStinrg์ ์ค๋ฒ ๋ก๋ฉํด์ ๋ฐฐ์ด์ ์ถ๋ ฅํ๋ค.
2. ๋ฐฐ์ด์ ๋ณต์ฌ - copyOf(), copyOfRange()

์ฃผ์ํด์ผ ํ ์ ์ผ๋ก๋ copyOfRnage์์๋ from์ ํฌํจ์ด์ง๋ง to๋ ํฌํจ๋์ง ์๋๋ค. ( from <= x < to )
3. ๋ฐฐ์ด ์ฑ์ฐ๊ธฐ - fill(), setAll()

4. ๋ฐฐ์ด์ ์ ๋ ฌ๊ณผ ๊ฒ์ - sort(), binarySearch()

binarySearch()๋ ์ด์ง ๊ฒ์ ๋ฉ์๋์ด๋ค.
์ด์ง๊ฒ์ ๋ฉ์๋๋ ๋ฐฐ์ด์ด ์ ๋ ฌ์ด ๋์ด์์ ๋๋ง index๋ฅผ ๋ฐํํ๋ค.
์ ๋ ฌ๋์ด์์ง ์์ผ๋ฉด ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
์์ฐจ ๊ฒ์
์์ฐจ ๊ฒ์์ ์์ฐจ์ ์ผ๋ก ์์์๋ถํฐ ์ฐพ๋ ๊ฒ์(ํ์) ๋ฐฉ๋ฒ์ด๋ค.ํ๊ท ์ ์ผ๋ก 5.5ํ๋ฅผ ์๋ชจํ์ฌ ์ซ์๋ฅผ ์ฐพ๋๋ค. ( 55 / 10 )
์ด์ง ๊ฒ์
์ด์ง ๊ฒ์์ ์ ์ฒด ์ซ์์์ ์ ๋ฐ์ผ๋ก ๋๋์ด ๊ฐ๋ฉฐ ์ซ์๋ฅผ ๊ฒ์(ํ์) ๋ฐฉ๋ฒ์ด๋ค.
์กฐ๊ฑด์ผ๋ก๋ ๊ฒ์ํ๋ ค๋ ๋ฐฐ์ด์ ํญ์ ์ ๋ ฌ๋์ด ์์ด์ผ ํ๋ค.ํ๊ท ์ ์ผ๋ก 3~4๋ฒ ๋๋๋ฉด ์ซ์๋ฅผ ์ฐพ๋๋ค.
5. ๋ค์ฐจ์ ๋ฐฐ์ด์ ์ถ๋ ฅ - deepToString()

6. ๋ค์ฐจ์ ๋ฐฐ์ด์ deepEquals()

7. ๋ฐฐ์ด์ List๋ก ๋ณํ - asList(Object... a) ← ๊ฐ๋ณ ๋งค๊ฐ๋ณ์

์ฌ๊ธฐ์ asList()๋ก ๋ง๋ค์ด์ง List๋ ์ฝ๊ธฐ ์ ์ฉ์ด๋ค.
์ฆ, add()๋ฅผ ํตํด ์ถ๊ฐํ๊ฑฐ๋ ํ ์ ์๋ค. ๊ทธ๋ ๊ธฐ์ ์ถ๊ฐ๋ฅผ ํ๊ธฐ ์ํด์๋ new๋ฅผ ํตํด ์๋ก์ด ArrayList๋ฅผ ์์ฑํด์ผ ํ๋ค.
์ด ์ธ ๋๋ค์ ์คํธ๋ฆผ ๊ด๋ จ ๋ฉ์๋๋ ์ถํ ๋ฐ๋ก ํฌ์คํ ์ ํ๊ฒ ๋ค.
Comparator์ Comparable
- ๊ฐ์ฒด ์ ๋ ฌ์ ํ์ํ ๋ฉ์๋(์ ๋ ฌ ๊ธฐ์ค ์ ๊ณต)๋ฅผ ์ ์ํ ์ธํฐํ์ด์ค
Comparable ๊ธฐ๋ณธ ์ ๋ ฌ ๊ธฐ์ค์ ๊ตฌํํ๋๋ฐ ์ฌ์ฉ.
Comparator ๊ธฐ๋ณธ ์ ๋ ฌ๊ธฐ์ค ์ธ์ ๋ค๋ฅธ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ ์ ํ ๋ ์ฌ

compare()์ compareTo()๋ ๋ ๊ฐ์ฒด์ ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋๋ก ์์ฑํด์ผ ํ๋ค.

Comparator์ Comparable์ ์์ ๋ฅผ ํ์ธํด๋ณด์.

์ ์์ ์์ strArr []์ ์ ๋ ฌํ๊ณ toString์ผ๋ก ์ถ๋ ฅํ์ ๋ Dog๊ฐ ์ ์ผ ๋จผ์ ์ถ๋ ฅ๋ ์ด์ ๋ ๋๋ฌธ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฌธ์์ ๋๋ฌธ์๊ฐ ๊ฐ์ด ์์ ๋๋ ๋๋ฌธ์๊ฐ ์ฐ์ ์ถ๋ ฅ์ด ๋๋ค.
๋ ๋ฒ์งธ ์ ๋ ฌ์ธ String.CASE_INSENSITIVE_ORDER์ Stringํด๋์ค์์ ๋ง๋ค์ด๋์ Comparator์ด๋ค.

๊ทธ๋ ๊ธฐ์ sort๋ก ์ ๋ ฌํ๋ฉด์ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก String.CASE_INSENSITIVE_ORDER์ ๋ฃ์ด์ฃผ๋ฉด
๋์๋ฌธ์ ๊ตฌ๋ถ ์์ด ์ ๋ ฌ์ด ๋๋ค. ( strArr=[cat, Dog, lion, tiger] )
์ด๋ ๊ฒ ์๋๋ ์ ๋ ฌ์ ํ ๋ ์ ๋ ฌํ ๋์๊ณผ ๊ธฐ์ค์ด ๋ ๋ค ์์ด์ผ ํ๋ค.
๋์๋ง ์ ๋ ฅํ๊ฒ ๋๋ฉด ๊ฐ์ฒด ๋ฐฐ์ด์ ์ ์ฅ๋ ๊ฐ์ฒด๊ฐ ๊ตฌํํ Comparable์ ์ํ ์ ๋ ฌ์ ํ๋ค.

๊ทธ๋ ๋ค๋ฉด ์ด๋ ๊ฒ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ์ด๋ป๊ฒ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๊ฟ ์ ์๋ ๊ฒ์ผ๊น.
์ ๋ ฌ์๋ ์ฌ๋ฌ ๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค. ๊ทธ๋ฐ ์ฌ๋ฌ ๊ฐ์ง์ ์ ๋ ฌ๋ค์ ๊ณตํต์ ์ ๋ ๋์์ ๋น๊ตํ๊ณ ์๋ฆฌ๋ฐ๊ฟ์ ๋ฐ๋ณตํ๋ค๋ ์ ์ด๋ค.
์ ๋ ฌ ๊ธฐ์ค์ ์ ์ฃผ๊ณ sort(Object[] a)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.

์ด๋ ๊ฒ ์ ๋ ฌ ๋์์ด ์ฃผ์ด์ง๋ฉด ๊ทธ ๋์์ ๊ฐ์ง๊ณ ๋น๊ต๋ฅผ ํ๋ฉด์ ์๋ฆฌ๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๊ธฐ์ ์ ์ ๋ ฌ ๋ก์ง์ ๋ถ๋ณํ์ง๋ง ๋น๊ตํ๋ ๋์๋ง ๊ฐ๋ณ์ ์ด๋ค.
๊ทธ๋ ๊ธฐ์ ์ฐ๋ฆฌ๋ ์ ๋น๊ต ๋์ ๋ถ๋ถ๋ง ์ ๋ ฌ ๊ธฐ์ค์ ์ ๊ณตํจ์ผ๋ก์จ ๋ฐ๊พธ๋ ๊ฒ์ด๋ค.

์ ์ฝ๋๋ ์ ๋ ฌ๊ธฐ์ค์ ์ ๊ณตํ sort(Object[] objArr, Comparator c)์ด๋ค.
์ด๋ ๊ฒ ์ ๋ ฌ ๊ธฐ์ค์ ์ ๊ณตํจ์ผ๋ก์จ ์ ๋ ฌ๋๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋๋ ๊ฒ์ด๋ค.
'๐จ๏ธ Backend > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java] ์ปฌ๋ ์ ํ๋ ์์ (6) - HashMap, Collectionsํด๋์ค (2) | 2022.12.16 |
|---|---|
| [Java] ์ปฌ๋ ์ ํ๋ ์์ (5) - HashSet, TreeSet (0) | 2022.12.13 |
| [Java]์ปฌ๋ ์ ํ๋ ์์ (3) - Stack & Queue (0) | 2022.12.02 |
| [Java]์ปฌ๋ ์ ํ๋ ์์ (2) - ArrayList, LinkedList (1) | 2022.11.28 |
| [Java]์ปฌ๋ ์ ํ๋ ์์ (collections framework) (0) | 2022.11.28 |

