CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /์ž๋ฐ” ๋ฒกํ„ฐ
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

์ž๋ฐ” ๋ฒกํ„ฐ

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์•„๋งˆ๋„ ๋‹น์‹ ์€ ์ด๋ฏธ Java์—์„œ ๋ฐฐ์—ด์„ ๋ณด์•˜๊ณ  ์ฃผ์š” ๋‹จ์  ์ค‘ ํ•˜๋‚˜๊ฐ€ ํฌ๊ธฐ ๋ถˆ๋ณ€์„ฑ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠน์ • ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“  ํ›„์—๋Š” ๋‚˜์ค‘์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” Java ์–ธ์–ด์˜ ์—ฌ๋Ÿฌ Java Collection ํ”„๋ ˆ์ž„์›Œํฌ ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ž๋ฐ” ๋ฒกํ„ฐ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ ๋…ผ์˜ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฒกํ„ฐ ํด๋ž˜์Šค๋ž€?

์„œ๋ฌธ์—์„œ ์ผ๋“ฏ์ด Java Collection Framework์˜ Vector ํด๋ž˜์Šค๋Š” ๋ฐฐ์—ด์˜ ์ •์  ํฌ๊ธฐ ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. Java Vector๋Š” ์ผ์ข…์˜ ๋™์  ๋ฐฐ์—ด์ด๋ฉฐ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๊ฑฐ๋‚˜ ์ค„์–ด๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Vector ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ ๊ทธ๋ฃน์„ ๊ฐ„๋‹จํ•œ ๊ฐœ์ฒด๋กœ ์ €์žฅํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Vector ํด๋ž˜์Šค๋Š” java.util ํŒจํ‚ค์ง€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์ „์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ชจ๋ฅด๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜๋ช… ๋™์•ˆ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” "๋ฐฐ์—ด"์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ Java์˜ ๋ฒกํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Vector ๋Š”ํด๋ž˜์Šค๋Š” ์ด๋ฏธ ๊ฝค ์˜ค๋ž˜๋˜์—ˆ์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ด๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๋‚˜์ค‘์— ์ปฌ๋ ‰์…˜์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. Java Vector์˜ ์œ ๋ช…ํ•œ "์•„๋‚ ๋กœ๊ทธ"๋Š” ArrayList ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค ๊ฐ„์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์€ Vector๊ฐ€ ๋™๊ธฐํ™”๋˜๋Š” ๋ฐ˜๋ฉด ArrayList๋Š” ๋™๊ธฐํ™”๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜์ค‘์— "Vector ํด๋ž˜์Šค์˜ ๋ฌธ์ œ์ " ์„น์…˜์—์„œ ์ด ๋‘ ํด๋ž˜์Šค์™€ Vector ํด๋ž˜์Šค ์˜ ๋” ํ˜„๋Œ€์ ์ธ ์•„๋‚ ๋กœ๊ทธ ์‚ฌ์ด์˜ ๋‹ค๋ฅธ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค .

์ž๋ฐ” ๋ฒกํ„ฐ ๋ฉ”์„œ๋“œ

Java ๋ฒกํ„ฐ ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • void add(int index, Object element) ๋ฒกํ„ฐ์˜ ์ง€์ •๋œ ์œ„์น˜์— ์ง€์ •๋œ ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

  • boolean add(Object o)๋Š” ์ง€์ •๋œ ์š”์†Œ๋ฅผ ๋ฒกํ„ฐ์˜ ๋์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • boolean addAll(Collection c) ์ง€์ •๋œ ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹์ง€์ •๋œ ์ปฌ๋ ‰์…˜ ๋ฐ˜๋ณต์ž๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ๋ฒกํ„ฐ์˜ ๋์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • boolean addAll(int index, Collection c) ์ง€์ •๋œ Collection ๋‚ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹์ง€์ •๋œ ์œ„์น˜์˜ ๋ฒกํ„ฐ์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

  • void addElement(Object obj)๋Š” ์ง€์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ด ๋ฒกํ„ฐ์˜ ๋์— ์ถ”๊ฐ€ํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ 1์”ฉ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.

  • int capacity()๋Š” ์ด ๋ฒกํ„ฐ์˜ ํ˜„์žฌ ์šฉ๋Ÿ‰์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • void clear()๋Š” ์ด ๋ฒกํ„ฐ์—์„œ ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ์ฒด clone()์€ ์ด ๋ฒกํ„ฐ์˜ ๋ณต์ œ๋ณธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • boolean contains(Object elem) ์ง€์ •๋œ ๊ฐ์ฒด๊ฐ€ ์ด ๋ฒกํ„ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

  • boolean containsAll(Collection c)๋Š” ๋ฒกํ„ฐ๊ฐ€ ์ง€์ •๋œ Collection์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • void copyInto(Object[] anArray)๋Š” ์ด ๋ฒกํ„ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ง€์ •๋œ ๋ฐฐ์—ด์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • Object elementAt(int index)๋Š” ์ง€์ •๋œ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • Enumeration elements()๋Š” ์ด ๋ฒกํ„ฐ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์—ด๊ฑฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • void ensureCapacity(int minCapacity)๋Š” ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ด ๋ฒกํ„ฐ์˜ ์šฉ๋Ÿ‰์„ ๋Š˜๋ ค ์ตœ์†Œ ์šฉ๋Ÿ‰ ์ธ์ˆ˜๋กœ ์ง€์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ ์ˆ˜ ์ด์ƒ์„ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  • boolean equals(Object o)๋Š” ์ง€์ •๋œ ๊ฐ์ฒด๋ฅผ ์ด ๋ฒกํ„ฐ์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ์ฒด firstElement()๋Š” ์ด ๋ฒกํ„ฐ์˜ ์ฒซ ๋ฒˆ์งธ ๊ตฌ์„ฑ ์š”์†Œ(์ธ๋ฑ์Šค 0์˜ ์š”์†Œ)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • Object get(int index)๋Š” ์ด ๋ฒกํ„ฐ์˜ ์ง€์ •๋œ ์œ„์น˜์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • int hashCode()๋Š” ์ด ๋ฒกํ„ฐ์˜ ํ•ด์‹œ ์ฝ”๋“œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • int indexOf(Object elem) equals ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™๋“ฑ์„ฑ์„ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ์ฃผ์–ด์ง„ ์ธ์ˆ˜์˜ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

  • int indexOf(Object elem, int index) index์—์„œ ์‹œ์ž‘ํ•˜์—ฌ equals ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™๋“ฑ์„ฑ์„ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ์ฃผ์–ด์ง„ ์ธ์ˆ˜์˜ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

  • void insertElementAt(Object obj, int index) ์ง€์ •๋œ ์ธ๋ฑ์Šค์—์„œ ์ด ๋ฒกํ„ฐ์— ๊ตฌ์„ฑ์š”์†Œ๋กœ ์ง€์ •๋œ ๊ฐ์ฒด๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ถ€์šธ isEmpty()๋Š” ๋ˆ„๋ฝ๋œ ๊ตฌ์„ฑ์š”์†Œ์— ๋Œ€ํ•ด ์ด ๋ฒกํ„ฐ๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ์ฒด lastElement()๋Š” ๋ฒกํ„ฐ์˜ ๋งˆ์ง€๋ง‰ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • int lastIndexOf(๊ฐ์ฒด ์š”์†Œ)๋Š” ์ด ๋ฒกํ„ฐ์—์„œ ์ง€์ •๋œ ๊ฐ์ฒด๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • int lastIndexOf(Object elem, int index) ์ง€์ •๋œ ์ธ๋ฑ์Šค์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ง€์ •๋œ ๊ฐ์ฒด๋ฅผ ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ•ด๋‹น ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • Object remove(int index)๋Š” ์ด ๋ฒกํ„ฐ์˜ ์ง€์ •๋œ ์œ„์น˜์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • boolean remove(Object o)๋Š” ์ด ๋ฒกํ„ฐ์—์„œ ์ง€์ •๋œ ์š”์†Œ์˜ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋ฒกํ„ฐ์— ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • boolean removeAll(Collection c)๋Š” ์ง€์ •๋œ Collection์— ํฌํ•จ๋œ ๋ฒกํ„ฐ์—์„œ ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • void removeAllElements()๋Š” ๋ฒกํ„ฐ์—์„œ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ํฌ๊ธฐ๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • boolean removeElement(Object obj)๋Š” ์ด ๋ฒกํ„ฐ์—์„œ ์ธ์ˆ˜์˜ ์ฒซ ๋ฒˆ์งธ(๊ฐ€์žฅ ๋‚ฎ์€ ์ธ๋ฑ์Šค) ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • void removeElementAt(int index) ์ธ๋ฑ์Šค์—์„œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • protected void removeRange(int fromIndex, int toIndex) ์ธ๋ฑ์Šค๊ฐ€ fromIndex(ํฌํ•จ)์™€ toIndex(ํฌํ•จ) ์‚ฌ์ด์— ์žˆ๋Š” ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹์ด List์—์„œ ๋ฐฐํƒ€์ ์œผ๋กœ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • boolean retainAll(Collection c)๋Š” ์ง€์ •๋œ Collection์— ํฌํ•จ๋œ ๋ฒกํ„ฐ์˜ ์š”์†Œ๋งŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  • Object set(int index, Object element)๋Š” ์ด ๋ฒกํ„ฐ์˜ ์ง€์ •๋œ ์œ„์น˜์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ง€์ •๋œ ์š”์†Œ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • void setElementAt(Object obj, int index) ์ด ๋ฒกํ„ฐ์˜ ์ง€์ •๋œ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ง€์ •๋œ ๊ฐ์ฒด๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • void setSize(int newSize) ์ด ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • int size()๋Š” ์ด ๋ฒกํ„ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • List subList(int fromIndex, int toIndex)๋Š” fromIndex(ํฌํ•จ)์™€ toIndex(๋ฐฐํƒ€์ ) ์‚ฌ์ด์—์„œ ์ด ๋ชฉ๋ก ๋ถ€๋ถ„์˜ ํ‘œํ˜„(๋ณด๊ธฐ)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • Object[] toArray()๋Š” ์ด ๋ฒกํ„ฐ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ํฌํ•จํ•˜๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • Object[] toArray(Object[] a)๋Š” ์ด ๋ฒกํ„ฐ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ํฌํ•จํ•˜๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๋œ ๋ฐฐ์—ด์˜ ์‹คํ–‰ ์œ ํ˜•์€ ์ง€์ •๋œ ๋ฐฐ์—ด์˜ ์œ ํ˜•์ž…๋‹ˆ๋‹ค.

  • String toString()์€ ๊ฐ ์š”์†Œ์˜ ๋ฌธ์ž์—ด ํ‘œํ˜„์„ ํฌํ•จํ•˜๋Š” ์ด ๋ฒกํ„ฐ์˜ ๋ฌธ์ž์—ด ํ‘œํ˜„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • void trimToSize()๋Š” ์ด ๋ฒกํ„ฐ์˜ ์šฉ๋Ÿ‰์„ ๋ฒกํ„ฐ์˜ ํ˜„์žฌ ํฌ๊ธฐ๋กœ ์ž๋ฆ…๋‹ˆ๋‹ค.

์ž๋ฐ” ๋ฒกํ„ฐ ์˜ˆ


import java.util.Vector;

public class VectorExample {

   public static void main(String[] args) {
       Vector vector = new Vector();
       System.out.println("the size of the empty vector = " +  vector.size());
       //adding some vector elements
       vector.add("Johnny");
       vector.add("Ivy");
       vector.add("Ricky");
       System.out.println(vector); 
       
       //adding more vector elements       
       vector.add("Johnny");
       vector.add("Paul");
       System.out.println(vector);
       System.out.println("the size of the vector = " +  vector.size());
       System.out.println("the first element of the vector = " + vector.firstElement());

       //here the program will print out the first appearance of "Johnny" element
       System.out.println(vector.indexOf("Johnny"));
       //program will print out the first appearance of "Johnny" element starting from the element 1
       System.out.println(vector.indexOf("Johnny", 1));
       vector.clear(); //deleting all vector elements
       System.out.println("the size of the vector after clear method = " +  vector.size());

   }
}
์ด ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋นˆ ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ = 0 [Johnny, Ivy, Ricky] [Johnny, Ivy, Ricky, Johnny, Paul] ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ = 5 ๋ฒกํ„ฐ์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ = Johnny 0 3 ์ง€์šฐ๊ธฐ ํ›„ ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ ๋ฐฉ๋ฒ• = 0

๋ฒกํ„ฐ ํด๋ž˜์Šค์— ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

Java Vector ํด๋ž˜์Šค ์˜ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ํ”„๋กœ๊ทธ๋žจ์—์„œ ์Šค๋ ˆ๋“œ ์•ˆ์ „ ๊ตฌํ˜„์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ Vector (Collection Framework์— ๋” ํšจ๊ณผ์ ์ธ ์ฐธ์—ฌ์ž) ๋Œ€์‹  ArrayList๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Vector ๋Œ€์‹  ArrayList ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์˜ ์˜ˆ์ œ๋ฅผ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค .

import java.util.ArrayList;
import java.util.List;

public class ArrayListExample {

       public static void main(String[] args) {
           List vector = new ArrayList();
           //Vector vector = new Vector();
           System.out.println("the size of the empty vector = " +  vector.size());
           vector.add("Johnny");
           vector.add("Ivy");
           vector.add("Ricky");
           System.out.println(vector);
           vector.add("Johnny");
           vector.add("Paul");
           System.out.println(vector);
           System.out.println("the size of the vector = " +  vector.size());
           //System.out.println("the first element of the vector = " + vector.firstElement());

           //here the program will print out the first appearance of "Johnny" element
           System.out.println(vector.indexOf("Johnny"));
           //program will print out the first appearance of "Johnny" element starting from the element 1
           //System.out.println(vector.indexOf("Johnny", 1));
           vector.clear();
           System.out.println("the size of the vector after clear method = " +  vector.size());

       }
   }
Vector.indexOf("Johnny", 1) ๋กœ ์ค„์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค . ArrayList ํด๋ž˜์Šค ์˜ ์ด ๋ณ€ํ˜•์—๋Š” ๊ทธ๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค . ๊ฐ™์€ ์ด์œ ๋กœ vector.firstElement() ํ–‰์ด ์ฃผ์„ ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ์ธก๋ฉด์—์„œ ํ”„๋กœ๊ทธ๋žจ์€ ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๋Ÿฌํ•œ ์˜ˆ์—์„œ ArrayList๊ฐ€ Vector ๋ณด๋‹ค ๋‚˜์€ ์ด์œ ๋Š” ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ด์œ ๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, Vector ํด๋ž˜์Šค๊ฐ€ ๋™๊ธฐํ™”๋˜์–ด ์žˆ์ง€๋งŒ ์ด์ƒํ•˜๊ฒŒ ๋ณด์ด์ง€๋งŒ ์™„์ „ํžˆ ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค Vector๋Š” ์ „์ฒด Vector ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ ์ž‘์—…์„ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.์ธ์Šคํ„ด์Šค ์ž์ฒด. ์ด๋Š” ๊ฐœ๋ณ„ ์ž‘์—…์ด ์•„๋‹Œ ์ „์ฒด ์ž‘์—… ์„ธํŠธ๋ฅผ ๋™๊ธฐํ™”ํ•ด์•ผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฒกํ„ฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฒกํ„ฐ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ˜๋ณต์ž๋Š” ConcurrentModificationException ์„ ๋ฐœ์ƒ ์‹œํ‚ต๋‹ˆ๋‹ค . ๋‘ ์Šค๋ ˆ๋“œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋™์‹œ์— Vector ์ธ์Šคํ„ด์Šค ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Œ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค . ๋‘˜์งธ, ๋ฒกํ„ฐ๊ฐ์ฒด์— ํฌ๊ธฐ ์กฐ์ • ๊ฐ€๋Šฅํ•œ ๋ฐฐ์—ด๊ณผ ๋™๊ธฐํ™”๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค๊ฐ€ ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด ์กฐํ•ฉ์€ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•œ์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์ฐจ๋‹จ ์ž‘์—…์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๊ฒƒ์€ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ ์ž‘์—…์—์„œ ๋ฒกํ„ฐ๋ฅผ ๋™๊ธฐํ™”ํ•˜๋ฉด ๊ฐ ์ž‘์—…์— ๋Œ€ํ•ด ๊ณ„์†ํ•ด์„œ ์ž ๊ธˆ์„ ํš๋“ํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค์˜ ์ „์ฒด ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™๊ธฐํ™”๋˜๋ฉด ์ž ๊ธˆ๋„ ํ•œ ๋ฒˆ ํš๋“๋˜๋ฏ€๋กœ ํ›จ์”ฌ ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ์…‹์งธ, ๋ฒกํ„ฐ๋Š” ์ผ๋ถ€ ๋ ˆ๊ฑฐ์‹œ ๋ฐฉ๋ฒ•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์š”์†Œ(). ์ด ๋ฉ”์„œ๋“œ๋Š” ๋ฒกํ„ฐ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์—ด๊ฑฐํ˜•์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ Iterator ๋˜๋Š” ListIterator๋ฅผ Enumeration์— ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ Enumeration์—๋Š” remove() ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฐ˜๋ณต ์ค‘์— ๋ชฉ๋ก์„ ๊ตฌ์กฐ์ ์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ListIterator์™€ ๋‹ฌ๋ฆฌ Enumeration์€ ์–‘๋ฐฉํ–ฅ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณด์‹œ ๋‹ค์‹œํ”ผ Vector ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ List ์ธํ„ฐํŽ˜์ด์Šค์˜ ์Šค๋ ˆ๋“œ ์•ˆ์ „ ๊ตฌํ˜„์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ? ์ด ๊ฒฝ์šฐ ArrayList๋Š” ๋„์›€์ด ๋˜์ง€ ์•Š์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด Vector ๋Œ€์‹  CopyOnWriteArrayList ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ArrayList ์˜ ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•œ ๋ณ€ํ˜•์œผ๋กœ ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.. ์ปฌ๋ ‰์…˜์˜ synchronizedList() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ArrayList๋ฅผ ๋™๊ธฐํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค .

Vector์—๋Š” ์ •๋ง ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ์—ฌ์ „ํžˆ Java์— ์žˆ๊ณ  ์™œ ๊ฐ€๋ฅด์ณ์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์งˆ๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค. ์™œ ์šฐ๋ฆฌ๋Š” ๋ฒกํ„ฐ ํด๋ž˜์Šค๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์™œ ์•„์ง Java์—์„œ ์ œ๊ฑฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? ์‚ฌ์‹ค Java๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ์›์น™์„ ๊ณต์–ธํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ˆ˜๋…„ ์ „์— ์ž‘์„ฑ๋œ ๋ชจ๋“  ์˜ค๋ž˜๋œ ์ฝ”๋“œ๊ฐ€ ์ตœ์‹  ๋ฒ„์ „์˜ Java์—์„œ ์ดํ•ด๋  ๊ฒƒ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Java ํ™˜๊ฒฝ์—๋Š” ์ˆ˜์‹ญ ๋…„ ๋™์•ˆ ์ง€์›๋˜์–ด ์˜จ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฝค ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์—์„œ ๊ทธ๋Ÿฌํ•œ "๊ณต๋ฃก"์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์œผ๋ฏ€๋กœ ๋น„ํšจ์œจ์ ์ธ ๋ ˆ๊ฑฐ์‹œ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š” ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋†€๋ผ์›€์— ๋Œ€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION