Java

์ž๋ฐ”์˜ ์ž๋ฃŒ๊ตฌ์กฐ - ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ(Collection Framework)

hyunki.Dev 2023. 2. 5. 01:30

๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

 ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’๋“ค์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ '์ž๋ฃŒ๊ตฌ์กฐ'๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ์˜ '์ž๋ฃŒ๊ตฌ์กฐ'๋Š”  ํšจ์œจ์ ์ธ ์ ‘๊ทผ ๋ฐ ์ˆ˜์ •์„ ๊ฐ€๋Šฅ์ผ€ ํ•˜๋Š” ์ž๋ฃŒ์˜ ์กฐ์ง, ๊ด€๋ฆฌ, ์ €์žฅ์„ ์˜๋ฏธํ•œ๋‹ค. ๋” ์ •ํ™•ํžˆ ๋งํ•ด, ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ๋ชจ์ž„, ๋˜ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„, ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋‚˜ ๋ช…๋ น์„ ์˜๋ฏธํ•œ๋‹ค.

 

์˜ค๋Š˜ ํ•ด๋‹น ํฌ์ŠคํŒ…์—์„œ๋Š” ์ž๋ฐ” ์–ธ์–ด์—์„œ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ ์ž๋ฐ” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ(Java Collection Framework)

์ž๋ฐ”์—์„œ๋Š” ๋ฐฐ์—ด(Array)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ํ•ด๋‹น ๊ฐ’๋“ค์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฐ์—ด์€ ๊ธฐ๋ณธ ํƒ€์ž…๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํด๋ž˜์Šค ํƒ€์ž…์˜ ๋ฐฐ์—ด๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐฐ์—ด์€ ์„ ์–ธ ์‹œ ์ •ํ•œ ํฌ๊ธฐ(์ €์žฅ ์šฉ๋Ÿ‰)์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ณ , ํ•ญ๋ชฉ์„ ์ €์žฅ, ์‚ญ์ œ, ์ถ”๊ฐ€ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถˆํŽธํ•จ๋“ค์€ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ํž˜๋“ค๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”๋Š” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ(Collection Framework)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

๋„๋ฆฌ ์•Œ๋ ค์ ธ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ(Data Structure)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด๋“ค์„ ํšจ์œจ์ ์œผ๋กœ ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค๋ฅผ java.util ํŒจํ‚ค์ง€์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค์„ ์ด์นญํ•ด์„œ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

 

์ปฌ๋ ‰์…˜ : ๊ฐ์ฒด์˜ ์ €์žฅ

ํ”„๋ ˆ์ž„์›Œํฌ : ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ •ํ•ด๋†“์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

์‹ค์ œ๋กœ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์‹ค์ œ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๋‹ค์–‘ํ•œ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค (๊ตฌํ˜„ ํด๋ž˜์Šค) ๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ปฌ๋ ˆ์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ List, Set, Map ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ์€ ์ด๋“ค ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค(๊ตฌํ˜„ ํด๋ž˜์Šค)๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

 

Collection Framework

 

๐Ÿ“Œ List

List ์ปฌ๋ ‰์…˜์€ ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๊ฐ์ฒด๋ฅผ ์ธ๋ฑ์Šค๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด๊ณผ์˜ ์ฐจ์ด์ ์€ ์ €์žฅ ์šฉ๋Ÿ‰์ด ์ž๋™์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋ฉฐ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•  ๋•Œ ์ž๋™ ์ธ๋ฑ์Šค๊ฐ€ ๋ถ€์—ฌ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฉ”์†Œ๋“œ๋“ค์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

  • ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜๋ฉด์„œ ์ €์žฅ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ์ œ๊ณต
  • ๊ตฌํ˜„ ํด๋ž˜์Šค๋กœ๋Š” Vector, ArrayList, LinkedList ๊ฐ€ ์žˆ์œผ๋ฉฐ  ArrayList๊ฐ€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  •  

์ฃผ์š” ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

List<String> list = ...;
list.add("ํ™๊ธธ๋™") // ๋งจ ๋์— ๊ฐ์ฒด ์ถ”๊ฐ€
list.add(1, "๊น€์ฒ ์ˆ˜"); // ์ง€์ •๋œ ์ธ๋ฑ์Šค์— ๊ฐ์ฒด ์‚ฝ์ž…
String str = list.get(1); //์ธ๋ฑ์Šค๋กœ ๊ฐ์ฒด ๊ฒ€์ƒ‰
list.remove(0); // ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ๊ฐ์ฒด ์‚ญ์ œ
list.remove("๊น€์ฒ ์ˆ˜"); // ํ•ด๋‹น ๊ฐ์ฒด ์‚ญ์ œ
list.size() // ํ˜„์žฌ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ์ฒด ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

//๋ฆฌ์ŠคํŠธ ๋ฐ˜๋ณต๋ฌธ ํ™œ์šฉ
for(int i=0; i<list.size(); i++){
	String str = list.get(i);
}

for(String str : list){
}

 

 

๐Ÿ“Œ ArrayList

ArrayList ๋Š” List ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋Œ€ํ‘œ์ ์ธ ๊ตฌํ˜„ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์‹ค๋ฌด์—์„œ๋„ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๊ตฌํ˜„ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

List<String> list = new ArrayList<String>();
List<String> list = new ArrayList<>();

๋‘ ๊ฐœ์˜ ์ฝ”๋“œ ๋ชจ๋‘ String ์„ ์ €์žฅํ•˜๋Š” ArrayList ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋‘๋ฒˆ์งธ ์ฝ”๋“ฑ์™€ ๊ฐ™์ด ArrayList์˜ E ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์™ผ์ชฝ List์— ์ง€์ •๋œ ํƒ€์ž…์„ ๋”ฐ๋ผ๊ฐ€๋ฏ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

  • ArrayList ์— ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด 0 ๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ArrayList์—์„œ ํŠน์ • ์ธ๋ฑ์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๋ฐ”๋กœ ๋’ค ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€ 1์นธ์”ฉ  ์•ž์œผ๋กœ ๋‹น๊ฒจ์ง‘๋‹ˆ๋‹ค. 
  • ArrayList์—์„œ ํŠน์ • ์ธ๋ฑ์Šค์˜ ๊ฐ์ฒด๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ํ•ด๋‹น ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€ ๋ชจ๋‘ 1์นธ์”ฉ ๋ฐ€๋ ค๋‚ฉ๋‹ˆ๋‹ค. 
  • โžก ์ด๋กœ ์ธํ•ด ๊ฐ์ฒด์˜ ๋นˆ๋ฒˆํ•œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด LinkedList๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

 

๐Ÿ“Œ Vector

Vector๋Š” ์‚ฌ์‹ค ์ด๋ฒˆ์— ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ ‘ํ•ด๋ณด๋ฉด์„œ ์ฒ˜์Œ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ ์‹ค๋ฌด์—์„œ๋Š” ์ž˜ ํ™œ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ๊ทธ๋ž˜๋„ ํŠน์ง•๋“ค์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ณ  ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

List<E> list = new Vector<E>();
List<E> list = new Vector<>();

ArrayList ์™€ ๋‹ค๋ฅธ ์ ์€ Vector๋Š” ๋™๊ธฐํ™”๋œ ๋ฉ”์†Œ๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— Vector์˜ ๋ฉ”์†Œ๋“œ๋“ค์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๊ณ , ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฉ”์†Œ๋“œ ์‹คํ–‰์„ ์™„๋ฃŒํ•ด์•ผ๋งŒ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.  ๊ทธ๋ž˜์„œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์Šค๋ ˆ๋“œ ์•ˆ์ „ ํ•˜๋‹ค๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“Œ LinkedList

LinkedList๋Š” ๋˜ ๋‹ค๋ฅธ List์˜ ๊ตฌํ˜„ ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ArrayList์™€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๋˜‘๊ฐ™์€๋ฐ ๋‚ด๋ถ€ ๊ตฌ์กฐ๊ฐ€ ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ArrayList๋Š” ๋‚ด๋ถ€ ๋ฐฐ์—ด์— ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•ด์„œ ๊ด€๋ฆฌํ•˜์ง€๋งŒ LinkedList๋Š” ์ธ์ ‘ ์ฐธ์กฐ๋ฅผ ๋งํฌํ•ด์„œ ์ฒด์ธ์ด ์—ฎ์ธ๊ฒƒ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. 

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ ํŠน์ • ์ธ๋ฑ์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์•ž๋’ค ๋งํฌ๋งŒ ๋ณ€๊ฒฝ๋˜๊ณ  ๋‚˜๋จธ์ง€ ๋งํฌ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠน์ • ์ธ๋ฑ์Šค์— ๊ฐ์ฒด๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. 

List<E> list = new LinkedList<E>();
List<E> list = new LinkedList<>();

์ด๋กœ ์ธํ•ด ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ(์ˆœ์ฐจ์ ์œผ๋กœ) ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ArrayList ๊ฐ€ ๋น ๋ฅด์ง€๋งŒ, ์ค‘๊ฐ„์— ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์•ž๋’ค ๋งํฌ ์ •๋ณด๋งŒ ๋ณ€๊ฒฝํ•˜๋ฏ€๋กœ ๋˜๋Š” LinkedList๊ฐ€ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. 

๊ตฌ๋ถ„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ถ”๊ฐ€/์‚ญ์ œ ์ค‘๊ฐ„์— ์ถ”๊ฐ€/์‚ญ์ œ ๊ฒ€์ƒ‰
ArrayList ๋น ๋ฅด๋‹ค ๋Š๋ฆฌ๋‹ค ๋น ๋ฅด๋‹ค
LinkedList ๋Š๋ฆฌ๋‹ค ๋น ๋ฅด๋‹ค ๋Š๋ฆฌ๋‹ค

 

๐Ÿ“Œ Set ์ปฌ๋ ‰์…˜ 

Set ์ปฌ๋ ‰์…˜์€ List์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๊ณ  ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

๊ตฌํ˜„ ํด๋ž˜์Šค๋กœ๋Š” HashSet, LinkedHashSet, EnumSet, TreeSet, CopyOnWriteArraySet ๋“ฑ์ด ์žˆ์œผ๋ฉฐ HashSet์ด ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 

Set<String> set = ...;
set.add("ํ™๊ธธ๋™");  //๊ฐ์ฒด ์ถ”๊ฐ€
set.add("๊น€์ฒ ์ˆ˜");
set.remove("ํ™๊ธธ๋™"); //๊ฐ์ฒด ์‚ญ์ œ

Set ์ปฌ๋ ‰์…˜์€ ์ธ๋ฑ์Šค๋กœ ๊ฐ์ฒด๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†๊ณ  ์ „์ฒด ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ ๋ฒˆ์”ฉ ๋ฐ˜๋ณตํ•ด์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ˜๋ณต์ž๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์ž๋Š” Iterator ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ ๋งํ•˜๋Š”๋ฐ, iterator() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Set<String> set = ...;
Iterator<String> iterator = set.iterator();
๋ฆฌํ„ด ํƒ€์ž… ๋ฉ”์†Œ๋“œ ์„ค๋ช…
boolean hasNext() ๊ฐ€์ ธ์˜ฌ ๊ฐ์ฒด๊ฐ€ ์žˆ์œผ๋ฉด true๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ  ์—†์œผ๋ฉด false ๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
E next() ์ปฌ๋ ‰์…˜์—์„œ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
void remove() Set ์ปฌ๋ ‰์…˜์—์„œ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

Iterator ์—์„œ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ๊ฐœ์ ธ์˜ฌ๋•Œ๋Š” next() ๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ๊ฐ’์ด ์žˆ๋Š”์ง€ hasNext()๋กœ ํ™•์ธํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

Set<String> set = ...;
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
	//String ๊ฐ์ฒด ํ•˜๋‚˜๋ฅผ ๊ฐ€์ ธ์˜ด
    String str = iterator.next();
}

 

๐Ÿ“Œ Map ์ปฌ๋ ‰์…˜ 

Map ์ปฌ๋ ‰์…˜์€ ํ‚ค ์™€ ๋ฐธ๋ฅ˜๋กœ ๊ตฌ์„ฑ๋œ Map.Entry ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.  Entry๋Š” Map ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ‚ค์™€ ๊ฐ‘์Šจ ๋ชจ๋‘ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

 

ํ‚ค๋Š” ์ค‘๋ณต ์ €์žฅ๋  ์ˆ˜ ์—†์ง€๋งŒ ๊ฐ’์€ ์ค‘๋ณต ์ €์žฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ธฐ์กด์— ์ €์žฅ๋œ ํ‚ค์™€ ๋™์ผํ•œ ํ‚ค๋กœ ๊ฐ’์„ ์ €์žฅํ•˜๋ฉด ๊ธฐ์กด์˜ ๊ฐ’์€ ์—†์–ด์ง€๊ณ  ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. 

 

Map<String, Integer> map = ...;
map.put("ํ™๊ธธ๋™" , 30); //๊ฐ์ฒด ์ถ”๊ฐ€
int score = map.get("ํ™๊ธธ๋™"); //๊ฐ์ฒด ์ฐพ๊ธฐ
map.remove("ํ™๊ธธ๋™");  //๊ฐ์ฒด ์‚ญ์ œ

 

์ €์žฅ๋œ ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋‚˜์”ฉ ์–ป๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ์—๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

์ฒซ๋ฒˆ์งธ๋Š” keySet() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” entrySet() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. 

Map<K, V> map = ...;
Set<K> keySet - map.keySet();
Iterator<K> keyIterator = keySet.iterator();

while(keyIterator.hasNext()){
	K key = keyIterator.next();
    V value = map.get(key);
}
Set<Map.Entry<K, V>> entrySet = map.entryset();
Iterator<Map.Entry<K, V>> entryIterator = entrySet.iterator();

while(entryIterator.hasNext()){
	Map.Entry<K, V> entry = entryIterator.next();
    K key = entry.getKey();
    V value = entry.getValue();
}

 

 

์ฐธ๊ณ : ์ฑ…  -  ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ”

https://st-lab.tistory.com/142 

 

์ž๋ฐ” [JAVA] - ์ž๋ฐ” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ (Java Collections Framework)

์•„๋งˆ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ „๊ณตํ•œ๋‹ค๋ฉด '์ž๋ฃŒ๊ตฌ์กฐ'๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋“ค์–ด๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ๋Š” Data Structure๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ง์—ญํ•˜๋ฉด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ. ์ข€ ๋” ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด '์ผ๋ จ์˜ ์ผ์ • ํƒ€์ž…๋“ค์˜

st-lab.tistory.com