1. ์ปจํ…Œ์ด๋„ˆ ๋ฐ ์ปฌ๋ ‰์…˜

์ปจํ…Œ์ด๋„ˆ ๋˜๋Š” ์ปฌ๋ ‰์…˜์€ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด๊ณผ ๋ชฉ๋ก์ด๋ผ๋Š” ๋‘ ์ข…๋ฅ˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Java์—๋Š” ์ˆ˜์‹ญ ๊ฐœ์˜ ์ปฌ๋ ‰์…˜์ด ์žˆ์œผ๋ฉฐ ๊ฐ ์ปฌ๋ ‰์…˜์€ ๊ณ ์œ ํ•œ ๋ฐฉ์‹์œผ๋กœ ์š”์†Œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ทธ ์ค‘ ๋ช‡ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ˆ˜์ง‘ ์ˆ˜์—… ์„ค๋ช…
List
ArrayList
๋ชฉ๋ก
LinkedList
์—ฐ๊ฒฐ๋œ ๋ชฉ๋ก
Vector
๋ฒกํ„ฐ
Stack
์Šคํƒ
Set
HashSet
์„ธํŠธ
TreeSet
LinkedHashSet
Queue
PriorityQueue
๋Œ€๊ธฐ์ค„
ArrayQueue
Map
HashMap
์ง€๋„/์‚ฌ์ „
TreeMap
HashTable

์—ฌ๊ธฐ์„œ ์ด๋ฆ„์€ ๋‹ค์†Œ ๋ชจํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ปฌ๋ ‰์…˜์ด๋ผ๊ณ  ํ•˜์ง€๋งŒ Java์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Java์—์„œ ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค ์ค‘ ์ผ๋ถ€๋Š” Collection์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋Š” ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ปฌ๋ ‰์…˜์€ ๋„“์€ ์˜๋ฏธ์˜ ์ปฌ๋ ‰์…˜๊ณผ ์ข์€ ์˜๋ฏธ์˜ ์ปฌ๋ ‰์…˜ (์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ์ปฌ๋ ‰์…˜๋งŒ Collection) ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค .

๋”ฐ๋ผ์„œ ํ˜ผ๋™์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ปฌ๋ ‰์…˜ ์— ๋Œ€ํ•ด ๋งํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ์ข์€ ์˜๋ฏธ์˜ ๋‹จ์–ด, ์ฆ‰ Collection์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. , ๋ฐ ์œ ํ˜• List์€ ๋ชจ๋‘ ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค. ๋„“์€ ์˜๋ฏธ์—์„œ ์ปฌ๋ ‰์…˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค . ์—ฌ๊ธฐ์—๋Š” ๋ฐ ๋ฐฐ์—ด ๊ณผ ๊ฐ™์€ ์œ ํ˜•์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค .SetQueueMap


2. HashSet์ˆ˜์ง‘

ํด๋ž˜์Šค HashSet๋Š” ์ผ๋ฐ˜์ ์ธ ์„ธํŠธ ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ชจ๋กœ ํด๋ž˜์Šค์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค ArrayList. ์–ด๋–ค ๋ฉด์—์„œ๋Š” ๋” ์›์‹œ์ ์ธ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

HashSet๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

HashSet<Type> name = new HashSet<Type>();

Type์ปฌ๋ ‰์…˜ ์— ์ €์žฅํ•  ์š”์†Œ์˜ ์œ ํ˜•์€ ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ HashSet?

ํด๋ž˜์Šค HashSet์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• ์„ค๋ช…
void add(Type value)
value์ปฌ๋ ‰์…˜์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
boolean remove(Type value)
value์ปฌ๋ ‰์…˜์—์„œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค . ํ•ด๋‹น ์š”์†Œ๊ฐ€ ์žˆ์œผ๋ฉด
๋ฐ˜ํ™˜true
boolean contains(Type value)
์ปฌ๋ ‰์…˜์— value์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
void clear()
์ปฌ๋ ‰์…˜์„ ์ง€์šฐ๊ณ  ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
int size()
์ปฌ๋ ‰์…˜์˜ ์š”์†Œ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ธ์‚ฌ๋ฅผ ํ•˜๋ฉด ์ž‘๋ณ„ ์ธ์‚ฌ๋ฅผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด ๋ด…์‹œ๋‹ค. ๋” ํฅ๋ฏธ๋กญ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋žจ์— ์—ฌ๋Ÿฌ ์–ธ์–ด๋กœ "hello"๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์•”ํ˜ธ ๋ฉ”๋ชจ
HashSet<String> set = new HashSet<String>();

set.add("Hallo");
set.add("Hello");
set.add("Hola");
set.add("Bonjour");
set.add("Ciao");
set.add("Namaste");

Scanner console = new Scanner(System.in);
String str = console.nextLine();

if (set.contains(str))
   System.out.println("Goodbye!");
HashSet์š”์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค String.


๋ณ€์ˆ˜ ์— ๋‹ค์–‘ํ•œ ์–ธ์–ด๋กœ ์ธ์‚ฌ๋ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค set.




์ฝ˜์†”์—์„œ ํ•œ ์ค„์„ ์ฝ์Šต๋‹ˆ๋‹ค.


๋ฌธ์ž์—ด์ด ์ธ์‚ฌ๋ง ์„ธํŠธ์— ์žˆ์œผ๋ฉด ์ž‘๋ณ„ ์ธ์‚ฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.


3. ์„ค์ •

์ปฌ๋ ‰์…˜ ์€ Set์ผ๋ จ์˜ ์š”์†Œ๋ฅผ ๋ณด์œ ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Set(์ง‘ํ•ฉ)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ปฌ๋ ‰์…˜์—๋Š” ์„ธ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์ž‘์—…

์ง‘ํ•ฉ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์€ ์„ธ ๊ฐ€์ง€๋ฟ์ž…๋‹ˆ๋‹ค. ์ง‘ํ•ฉ์— ์š”์†Œ ์ถ”๊ฐ€, ์ง‘ํ•ฉ์—์„œ ์š”์†Œ ์ œ๊ฑฐ, ์ง‘ํ•ฉ์— ํŠน์ • ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ. ๊ทธ๊ฒŒ ๋‹ค์•ผ.

์ฃผ๋ฌธ ์—†์Œ

์ด ์ปฌ๋ ‰์…˜์˜ ์š”์†Œ์—๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋กœ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ํŠน์ • ์ธ๋ฑ์Šค์˜ ์ปฌ๋ ‰์…˜์— ๊ฐ’์„ ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์„ธํŠธ์—๋Š” get()๋ฐ set()๋ฉ”์†Œ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋…ํŠนํ•œ ์š”์†Œ

์ง‘ํ•ฉ์˜ ๋ชจ๋“  ์š”์†Œ๋Š” ๊ณ ์œ ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ๋ก๊ณผ ๋‹ฌ๋ฆฌ ์„ธํŠธ์—๋Š” ์š”์†Œ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ฒด๋Š” ์ง‘ํ•ฉ์— ํฌํ•จ๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ์˜ต์…˜์€ ์—†์Šต๋‹ˆ๋‹ค. ์ƒ‰์ƒ ์„ธํŠธ์— ๊ฒ€์€์ƒ‰์„ ์„ธ ๋ฒˆ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ์žˆ๋“  ์—†๋“  ๋‘˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์š”์†Œ ์ฐพ๊ธฐ

์ƒˆ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์ง‘ํ•ฉ์— ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๋•Œ ํ•ด๋‹น ์š”์†Œ์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰์ด ๋ฉ”์„œ๋“œ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ „๋‹ฌ๋œ ์š”์†Œ๋Š” ๋จผ์ € ์— ์˜ํ•ด ์ปฌ๋ ‰์…˜์˜ ์š”์†Œ์™€ ๋น„๊ต๋˜๊ณ  hashCode()๊ฐ’์ด hashCode()์ผ์น˜ ์— ์˜ํ•ด ๋ฐ˜ํ™˜๋œ ๊ฒฝ์šฐ ์— ์˜ํ•ด ๋น„๊ต๋ฉ๋‹ˆ๋‹ค equals().



4. ์ปฌ๋ ‰์…˜ ๋น„๊ต: ListvsSet

์ปฌ๋ ‰์…˜์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์„ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•œ ์ปฌ๋ ‰์…˜์ด ๋‹ค๋ฅธ List์ปฌ๋ ‰์…˜ Set๋ณด๋‹ค ์œ ๋ฆฌํ•œ ๊ฒฝ์šฐ์™€ ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ ์ฃผ์š” ์ฐจ์ด์ ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์žฅ๋‚œ๊ฐ์„ ์˜ˆ๋กœ ๋“ค์–ด List์™€ Set์„ ๋น„๊ตํ•ด ๋ด…์‹œ๋‹ค.

List(๋ชฉ๋ก) ์ปฌ๋ ‰์…˜์€ ๋†€์ด๋ฐฉ ์˜ ๋ฒฝ์„ ๋”ฐ๋ผ ๋ฐฐ์—ด๋œ ์žฅ๋‚œ๊ฐ ์„ธํŠธ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก ๋์— ์žฅ๋‚œ๊ฐ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ค‘๊ฐ„์— ์‚ฝ์ž…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(๋‹จ, ๊ธฐ์กด ์žฅ๋‚œ๊ฐ ์ค‘ ์ผ๋ถ€๋ฅผ ์ด๋™ํ•ด์•ผ ํ•จ).

๊ฐ ์žฅ๋‚œ๊ฐ์—๋Š” ์ƒ‰์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ‰์ธ์œผ๋กœ ์žฅ๋‚œ๊ฐ์„ ์ฐธ์กฐํ•˜๊ณ  ์žฅ๋‚œ๊ฐ ๋ฒˆํ˜ธ 7์„ ์žฅ๋‚œ๊ฐ ๋ฒˆํ˜ธ 13์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก์—์„œ ์žฅ๋‚œ๊ฐ ๋ฒˆํ˜ธ 4๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชฉ๋ก์— ์žˆ๋Š” ๊ฐ ์žฅ๋‚œ๊ฐ์˜ ์ธ๋ฑ์Šค๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Set(์„ธํŠธ) ์ปฌ๋ ‰์…˜์€ ๋ฐ”๋‹ฅ ํ•œ๊ฐ€์šด๋ฐ์— ์žˆ๋Š” ์žฅ๋‚œ๊ฐ ๋”๋ฏธ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ๋”๋ฏธ์— ์žฅ๋‚œ๊ฐ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ณ  ๋”๋ฏธ์—์„œ ์žฅ๋‚œ๊ฐ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์žฅ๋‚œ๊ฐ์—๋Š” ๊ด€๋ จ๋œ ๊ณ ์ • ์ธ๋ฑ์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋˜๋Š” ์ž๋…€์˜ ์ƒ์ผ์„ ์œ„ํ•ด ์žฅ๋‚œ๊ฐ์„ ์„ ํƒํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ €, ๊ทธ๊ฐ€ ์ด๋ฏธ ์žฅ๋‚œ๊ฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฐ€ ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์žฅ๋‚œ๊ฐ์€ ๋‹น์‹ ์ด ๊ตฌ๋งคํ•˜์ง€ ์•Š์„ ์žฅ๋‚œ๊ฐ ์„ธํŠธ๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ "์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์žฅ๋‚œ๊ฐ" ์„ธํŠธ์˜ ์žฅ๋‚œ๊ฐ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์ƒ์ผ์„ ๋งž์€ ๋‚จ์ž ์•„์ด๊ฐ€ ํŠน์ • ์žฅ๋‚œ๊ฐ์„ ๋‘ ๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€๋„ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ ์žฅ๋‚œ๊ฐ์˜ ์ˆœ์„œ๋‚˜ ์ˆ˜์—๋Š” ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๊ด€์‹ฌ์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์„ธํŠธ์— ์กด์žฌํ•˜๋Š” ๊ฐ๊ฐ์˜ ๊ณ ์œ ํ•œ ์žฅ๋‚œ๊ฐ์„ ์•„๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” Set์ปฌ๋ ‰์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌํ˜„์€ HashSetํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.