๋ฐฑ์—”๋“œ(Back-End) ๊ฐœ๋ฐœ/Java

์ œ๋„ค๋ฆญ(Generics) ์ด๋ž€? (+Wrapper ํด๋ž˜์Šค, ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ)

rabo93 2025. 1. 19. 20:10

์ž๋ฐ”์—์„œ ์ œ๋„ค๋ฆญ์€ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐํƒ€์ž…์„ ์™ธ๋ถ€์—์„œ ์ง€์ •ํ•˜๋Š” ๊ฒƒ!

์ฆ‰, ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ ์‹œ ๋ฏธ๋ฆฌ ํƒ€์ž…์ด ์ง€์ •๋œ๋‹ค.

 

์‚ฌ์šฉ์ด์œ ? ํƒ€์ž… ์•ˆ์ „์„ฑ

 

๋ฆฌ์ŠคํŠธ ๊ฐ์ฒด๋ฅผ ์˜ˆ๋ฅผ ๋“ค๋ฉด..

ArrayList<String> List = new ArrayList<>(); // ๋’ท์ชฝ์˜ ์ œ๋„ค๋ฆญ์˜ ํƒ€์ž…์€ ์ƒ๋žต ๊ฐ€๋Šฅ

๋ฆฌ์ŠคํŠธ ํด๋ž˜์Šค ์ž๋ฃŒํ˜•์˜ ํƒ€์ž…์€ String์œผ๋กœ ์ง€์ •๋˜์–ด, ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋งŒ ๋ฆฌ์ŠคํŠธ์— ์ ์žฌ ๊ฐ€๋Šฅํ•จ!

 

์šฐ๋ฆฌ๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋“ฏ,
์ œ๋„ค๋ฆญ์€ ๊ฐ์ฒด(Object)์— ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

์ œ๋„ค๋ฆญ ํƒ€์ž…์˜ ์ข…๋ฅ˜

=> ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์„ ์–ธ๋˜๋Š” ๋ฐฉ์‹์ด์ง€ ๋ฌด์กฐ๊ฑด ์ง€์ผœ์•ผํ•˜๋Š” ๊ทœ์น™์€ ์•„๋‹˜

<T> : Type

<K> : Key

<V> : Value

<E> : Element

<N> : Number

<R> : Result

<S>, <U>, <V> … ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ œ๋„ค๋ฆญ ํด๋ž˜์Šค๋Š” ๊ธฐ๋ณธํ˜• ํƒ€์ž… (int, double, char,...)์„ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค.

=> Integer, Double๊ณผ ๊ฐ™์€ ์ฐธ์กฐํ˜• ํƒ€์ž…์„ ํ™œ์šฉํ•˜์—ฌ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค.

 

 Wrapper ํด๋ž˜์Šค

์ž๋ฐ”์˜ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•(int, float, double, char..)์„ ์œ„ํ•œ ํด๋ž˜์Šค

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ฐ์ฒด์ด๊ฑฐ๋‚˜ return๊ฐ’์ด ๊ฐ์ฒด์ธ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์„ ๊ฐ์ฒดํ˜•์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

int Wrapperํด๋ž˜์Šค๋Š” Integer๋กœ ํ•ด๋‹น ํด๋ž˜์Šค์˜ parseInt๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ์ทจ๊ธ‰๋˜๋Š” "1"์„ ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋˜ํ•œ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ œ๋„ค๋ฆญ์œผ๋กœ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ Wrapper ํด๋ž˜์Šค๋ฅผ ์จ์•ผํ•œ๋‹ค!

// String -> int
int num = Integer.parseInt("10");

// int -> String
String str = Integer.toString(10);

 

์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ (Collection Framework (API, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) : ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•ด ๋†“์€ ํด๋ž˜์Šค)

- SET /  LIST / MAP

1) Set : ์ค‘๋ณตํ—ˆ์šฉ X

=> ๊ตฌํ˜„์ฒด ํด๋ž˜์Šค : HashSet, LinkedHashSet(์ˆœ์„œ), TreeSet(์ •๋ ฌ) 

=> ์†๋„ ๋น ๋ฅธ ์ˆœ์„œ : HashSet > LinkedHashSet > TreeSet

 

2) LIST : ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๋ฉฐ ํฌ๊ธฐ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ 

=> ๊ตฌํ˜„์ฒด ํด๋ž˜์Šค : ArrayList, LinkedList, Vector

=> ArrayList VS Vector : ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ์•ˆ์ „ ์—ฌ๋ถ€!

                                        ArrayList (์•ˆ์ „ X) /   Vector(์•ˆ์ „ O)

=> ArrayList VS LinkedList : ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ (get, select, ๊ฐ€์ ธ์˜ฌ๋•Œ) ArrayList๊ฐ€ ๋น ๋ฆ„

                                             ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€/์‚ญ์ œ(์•ž๋’ค)๋Š” ๋˜‘๊ฐ™์Œ

                                             ๋ฐ์ดํ„ฐ ์ค‘๊ฐ„ ์ถ”๊ฐ€/์‚ญ์ œ๋Š” LinkedList๊ฐ€ ๋น ๋ฆ„

 

3) Map  : key, value ํ•œ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ

=> ๊ตฌํ˜„์ฒด ํด๋ž˜์Šค : HashMap, LinkedHashMap(์ˆœ์„œ), TreeMap(์ •๋ ฌ)

Map<String, String> map = new HashMap<>();

์ œ๋„ค๋ฆญ์„ ๋ฌธ์ž์—ด๋กœ ์ง€์ •ํ•˜๋Š” ๋งต ๊ฐ์ฒด