๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’Š Java & Kotlin & Spring/- Java & kotlin

[Java ์‹ฌํ™”] List ์ปฌ๋ ‰์…˜์—์„œ ์ฐธ์กฐ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์–ด๋–ค ๊ฒƒ์œผ๋กœ ํ•ด์•ผํ• ๊นŒ?

by Wonit 2020. 7. 29.

์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ArrayList๋‚˜ LinkedList๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์€ ์–ด๋–ค ๊ฒƒ์œผ๋กœ ํ•ด์•ผํ• ๊นŒ? ์ด๋‹ค.

 

์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ๋ฉด

 

ํ•„์ž๋Š” ์ž๋ฐ”๋ผ๋Š” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ์ฝ”๋“œ๋ฅผ ๋ด์™”์—ˆ๋Š”๋ฐ, ๊ฐ™์€ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ ์ด๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ง  ๊ฒฝ์šฐ๋ฅผ ๋ณด์•˜๋‹ค.

 

๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ๋ฐ ๋ฐ”๋กœ List ์ปฌ๋ ‰์…˜์—์„œ์˜ ์ฐธ์กฐ๋ณ€์ˆ˜ ํƒ€์ž…์ด๋‹ค.

 

 

์ด ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ด ๋‘˜์˜ ์ฐจ์ด๋ฅผ ๋ช…ํ™•ํžˆ ๋‹ต๋ณ€์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋‚ด ๊ธ€์„ ๋ณด์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๋‚ด์šฉ์ด๋‹ค.


์ด ๋‘˜์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „์— ๋‹คํ˜•์„ฑ์ด๋ผ๋Š” ๊ฐœ๋…๊ณผ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์–ด๋Š์ •๋„ ์ดํ•ด๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.


์˜ค๋Š˜์€ ๋‹คํ˜•์„ฑ๊ณผ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์•Œ์•„๋ณด๋Š” ํฌ์ŠคํŒ…์ด ์•„๋‹ˆ๋ฏ€๋กœ ์ƒํ™œ์ฝ”๋”ฉ์˜ ๋‹คํ˜•์„ฑ ๊ฐ•์˜๊ณผ ์ƒํ™œ์ฝ”๋”ฉ์˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ•์˜๋ฅผ ๋ด๋ณธ๋‹ค๋ฉด ์ดํ•ด๊ฐ€ ๋น ๋ฅด๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์ž ์‹œ ๊นŒ๋จน์—ˆ์„ ์ˆ˜๋„ ์žˆ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ๊ฐ€๋ณ๊ฒŒ ๋‹คํ˜•์„ฑ๊ณผ ์ธํ„ฐํŽ˜์ด์Šค, ๊ทธ๋ฆฌ๊ณ  List, ArrayList, LinkedList์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ ํ•ด๋ณด์ž๋ฉด.

๋‹คํ˜•์„ฑ

๋™์ผํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ์กฐ์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ˆ˜ํ–‰ ๋™์ž‘์— ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ํ˜•ํƒœ๋ฅผ ๋งํ•œ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค

์ธํ„ฐํŽ˜์ด์Šค๋Š” ํด๋ž˜์Šค๋“ค์ด ๊ผญ ๊ตฌํ˜„์„ ํ•ด์•ผํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋ช…์‹œํ•ด๋†“์€ ๊ฒƒ์ฏค ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ด๋ฒˆ ํฌ์ŠคํŒ…์„ ๋“ฃ๊ธฐ์—๋Š” ๋ฌด๋ฆฌ๊ฐ€ ์—†์–ด ๋ณด์ธ๋‹ค.

List VS ArrayList VS LinkedList

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

List ์ธํ„ฐํŽ˜์ด์Šค

๊ทธ๋ฆฌ๊ณค ArrayList์—์„œ ๊ตฌํ˜„์ด ๋˜์–ด ์žˆ๋‹ค๋Š” ์ ์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ implementsํ•˜๋Š” ๊ธฐ๋ณธ ๊ฐœ๋…์ด๋‹ค.

 

์ด๋Ÿฐ ์ž…์žฅ์—์„œ ๋”ฐ์ ธ ๋ณธ๋‹ค๋ฉด ๊ธฐ๋ณธ ํ‹€์€ List์ด๊ณ  ๊ทธ ๊ธฐ๋Šฅ์„ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ๋™์ž‘ํ•˜๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€๋Š” ๊ฐ๊ฐ์˜ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

ArrayList(์ขŒ)  LinkedList(์šฐ)

์ด๋ ‡๋“ฏ LinkedList๋Š” node๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ณ , ArrayList๋Š” ๋ฐฐ์—ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

 

๊ทธ๋Ÿผ ์ง„์งœ ์‹œ์ž‘ํ•ด๋ณด์ž.

๋ณธ๋ก ์ธ ์ฐจ์ด์ ์— ๋Œ€ํ•ด

List name = new ArrayList();
ArrayList address = new ArrayList();

์— ์žˆ์–ด์„œ์˜ ์ฐจ์ด์ ์€ ๋‚ด๊ฐ€ ์ฐพ์•„๋ณด๊ณ , ๊ฒฝํ—˜ํ•˜๊ธฐ๋กœ๋Š” 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

    1. ๊ตฌํ˜„ ๊ด€์ ์—์„œ์˜ ์ฐจ์ด
    1. ๋‹คํ˜•์„ฑ์ ์ธ ์ธก๋ฉด์—์„œ์˜ ์ดํ•ด

๊ตฌํ˜„ ๊ด€์ ์—์„œ์˜ ์ฐจ์ด

๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์œผ๋ฉด ํšŒ์› ์ •๋ณด ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.

 

๊ทธ๋Ÿผ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿผ ์šฐ๋ฆฌ๊ฐ€ ์˜ˆ์ƒํ•œ ๊ธฐ๋Šฅ์ด ์ž˜ ๋™์ž‘ํ•  ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์–ด์„œ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ๋‚˜ ๋‹‰๋„ค์ž„์ด๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ์ค‘ ํ•˜๋‚˜๋งŒ ๋“ค์–ด์™€๋„ ํšŒ์› ์ •๋ณด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค„ ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž.

 

ํ•˜์ง€๋งŒ ๋‹‰๋„ค์ž„์ด ๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ์˜ ํ˜•ํƒœ๊ฐ€ ArrayList๊ฐ€ ์•„๋‹ˆ๋ผ LinkedList๋ผ๋ฉด? ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜ํ™˜๋˜๋Š” ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๊ฐ€ ArrayList๊ฐ€ ์•„๋‹ˆ๋ผ LinkedList๋ผ๋ฉด?

 

๊ทธ๋Ÿผ

์„œ๋กœ ํƒ€์ž…์ด ๋งž์ง€ ์•Š๋Š”๋‹ค๋Š” ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ง€์˜ฅ์— ๋น ์ง€๊ฒŒ ๋œ๋‹ค.

 

๊ทธ๋Ÿผ ์—ฌ๊ธฐ์„œ Listํ˜•ํƒœ์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ€ ๋“ฑ์žฅํ•ด์„œ ๋‹คํ˜•์„ฑ์„ ์ ์šฉํ•œ๋‹ค๋ฉด?

ํƒ€์ž…๊ฐ„์˜ ๋ฌธ์ œ๊ฐ€ ์„œ๋กœ ์‚ฌ๋ผ์ง„๋‹ค.

๋‹คํ˜•์„ฑ ์ธก๋ฉด์—์„œ์˜ ์ดํ•ด

์ด ๋ฌธ์ œ๋ฅผ ๋‹คํ˜•์„ฑ ์ธก๋ฉด์œผ๋กœ ๋Œ๊ณ ๊ฐ€์ž๋ฉด ์กฐ๊ธˆ ๋‹ค๋ฅธ ์ƒ๊ฐ์„ ํ•ด๋ด์•ผ ํ•œ๋‹ค.

 

์šฐ๋ฆฌ๊ฐ€ ๋งŒ์•ฝ ํ‚ค๋ณด๋“œ๋ผ๋Š” ์‹ค์กด ๊ฐ์ฒด๋ฅผ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.(์ •๋ง ๋ˆˆ ์•ž์— ์žˆ๋Š” ํ‚ค๋ณด๋“œ๋ฅผ ๋ด๋ณด์ž)


์ด ํ‚ค๋ณด๋“œ๋Š” ์ •๋ง ์ฒ ์ €ํ•˜๊ฒŒ ๋‹คํ˜•์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค.


ํ‚ค๋ณด๋“œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ‚ค๋ฅผ ์ผ์ • ์••๋ ฅ์œผ๋กœ ์œ„์—์„œ ์•„๋ž˜๋กœ ๋ˆ„๋ฅด๋ฉด ๊ธฐ๋Šฅ์ด ์‹คํ–‰์ด๋ผ๋Š” ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค์  ๋Š๋‚Œ์ด๊ณ  ๋ฐฉํ–ฅํ‚ค๋Š” ๊ฐ๊ฐ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋™์ž‘์„ ํ•˜๋Š” ๊ตฌํ˜„ ํด๋ž˜์Šค์  ๋Š๋‚Œ์ด๋‹ค.

 

์šฐ๋ฆฌ๊ฐ€ ์ˆซ์ž 1์„ ๋ˆ„๋ฅด๋ฉด 1์ด ํƒ€์ดํ•‘ ๋˜๊ณ , backspace๋ฅผ ๋ˆ„๋ฅด๋ฉด 1์ด ์‚ฌ๋ผ์ง€๋Š”๊ฒƒ๊ณผ ๊ฐ™์€ ๋Š๋‚Œ์œผ๋กœ ๊ฐ™์€ ํ‚ค์˜ ์ž…๋ ฅ ๊ธฐ๋Šฅ์„ ํ•˜์ง€๋งŒ ์„œ๋กœ ๋‹ค๋ฅธ ํ‚ค์˜ ์—ญํ• ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์šฐ๋ฆฌ์˜ ํ‚ค๋ณด๋“œ๋ฅผ ์„ค๋ช…ํ•  ๋•Œ, ํ‚ค๋ณด๋“œ ์˜†์— ์žˆ๋Š” ๋ฌผ๊ฑด์„ ์ „ํ™”๋กœ ์„ค๋ช…ํ•  ๋•Œ ์ด๋ ‡๊ฒŒ ์„ค๋ช…ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

 

์ŠคํŽ˜์ด์Šค๋ฐ” ์˜†์— ์žˆ๋Š” ๋‚ด ์ด์–ดํฐ์ข€ ๊ฐ€์ ธ๋‹ค์ค˜!

์šฐ๋ฆฌ๋Š”

ํ‚ค๋ณด๋“œ ์˜†์— ์žˆ๋Š” ๋‚ด ์ด์–ดํฐ์ข€ ๊ฐ€์ ธ๋‹ค์ค˜!

๋ผ๊ณ  ํ•˜์ง€..

 

์ด ๋ง์€ ์ฆ‰, ์ตœ๋Œ€ํ•œ ๊ฐœ๋ฐœ์‹œ์— ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์˜๋„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.


๋‹จ์ง€ ์šฐ๋ฆฌ๋Š” List๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋ˆ„๊ฐ€ ๋ด๋„ List๋‚˜ ArrayList๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ด์˜ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ตฌ๋‚˜๋ฅผ ์•Œ์ง€๋งŒ ๊นŠ์€ ์ˆ˜์ค€์˜ ๋‹คํ˜•์„ฑ์„ ์ด์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๊ทธ ์˜๋ฏธ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ํ•ด์•ผํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 


์ด๋ ‡๊ฒŒ ์˜ค๋Š˜์€ ์ฐธ์กฐ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์— ๋”ฐ๋ฅธ ๋‹ค์–‘ํ•œ ์ž…์žฅ์„ ์‚ดํŽด๋ณด์•˜๋‹ค.


์˜ˆ์ „์—๋Š” ์ผ๋‹จ ์ƒˆ๋กœ์šด ์ง€์‹์ด๋ผ๋ฉด ์–ด์„œ ๋ฐ›์•„๋“ค์ด๋ ค๊ณ  ๋‹ฅ์น˜๋Š”๋Œ€๋กœ ์™ธ์šฐ๊ณ  ์จ๋ณด๊ณ ๋ฅผ ๋ฐ˜๋ณตํ–ˆ์—ˆ์ง€๋งŒ ์ด์ œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ง ๊ทธ๋Œ€๋กœ ๋‹จ์ง€ ์–ธ์–ด๋ฅผ ๊ณต๋ถ€ํ•˜๋Š”๊ฒƒ ๋ฟ์ด๋ผ๋Š” ๊ฒƒ์„ ์–ด๋Š ์ˆœ๊ฐ„ ๋Š๋ผ๊ฒŒ ๋˜์—ˆ๋‹ค.


์ด์   ์ด๋Ÿฐ ์‚ฌ์†Œํ•œ ์˜๋ฏธ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ํŒŒํ—ค์น˜๋Š” ์ง„์งœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋ฉ‹์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  ๊ทธ ๋ฉ‹์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๊ณ  ์‹ถ๋‹ค.

 

๋์œผ๋กœ ์ œ๊ฐ€ ์ด ๊ธ€์„ ์“ฐ๋ ค๊ณ  ๋งˆ์Œ ๋จน๊ฒŒ๋œ Okky์˜ fender๋‹˜์ด ํ•ด๋‹น ์ฃผ์ œ์— ๊ด€ํ•œ ๋‹ต๋ณ€์„ ์ธ์šฉํ•˜์ž๋ฉด...

๋งŒ์•ฝ์— ๋ชป์„ ๋ฐ•๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ผ๋ฉด ์กฐ์ˆ˜์—๊ฒŒ "๊ณต๊ตฌํ•จ์— ๊ฐ€์„œ ๋ง์น˜๋ฅผ ๊ฐ€์ ธ์™€๋ผ"๋ผ๊ณ  ๋งํ•˜๋ฉด ๊ทธ๋งŒ์ด์ง€ ๊ตณ์ด "๊ณต๊ตฌํ•จ์—์„œ ๊ธธ์ด๊ฐ€ ์•ฝ 30cm ๊ฐ€๋Ÿ‰์ด๊ณ  ๋ฌด๊ฒŒ 1kg ์ •๋„ ๋˜๋Š” ๋ชฉ์žฌ์˜ ์†์žก์ด๋กœ ๋œ ๋ง์น˜๋ฅผ ๋“ค๊ณ ์™€๋ผ"๋ผ๊ณ  ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๋ชฉ๊ณต์ด ์กฐ์ˆ˜์—๊ฒŒ ๋ถ€ํƒ์„ ํ•  ๋•Œ๋‚˜, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ๋‚˜ ์˜๋„๋ฅผ ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ์ ์ด ๋ชป์„ ๋ฐ•๋Š” ๊ฒƒ์ด๊ณ , ์ˆœ์„œ๊ฐ€ ๋ณด์กด๋˜๋Š” ์ปฌ๋ ‰์…˜์— ๊ฐ’์„ ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ๊ทธ๋ƒฅ '๋ง์น˜' ๋˜๋Š” 'List'๋ผ๊ณ  ํ•˜๋ฉด ๊ทธ๋งŒ์ž…๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€