JavaRush /Java Blog /Random-KO /๊ทธ๋ฆผ์˜ Java ArrayList

๊ทธ๋ฆผ์˜ Java ArrayList

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜ ๊ฐ•์˜๋Š” ArrayList์ด์ „ ๊ฐ•์˜์— ๋น„ํ•ด ํ•œํŽธ์œผ๋กœ๋Š” ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ํ•œํŽธ์œผ๋กœ๋Š” ๋” ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 1์˜ค๋Š˜์€ "๋‚ด๋ถ€"๋ฅผ ์‚ดํŽด๋ณด๊ณ  ArrayList์ž‘์—… ์ค‘์— ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์—ฐ๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์—, ์ด๋ฒˆ ๊ฐ•์˜์—๋Š” ์ฝ”๋“œ๊ฐ€ ๊ฑฐ์˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๊ทธ๋ฆผ๊ณผ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. ์ž, ๊ฐ€๋ด…์‹œ๋‹ค :) ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋“ฏ์ด ArrayList'a ๋‚ด๋ถ€์—๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ์—ญํ• ์„ ํ•˜๋Š” ์ผ๋ฐ˜ ๋ฐฐ์—ด์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ชฉ๋ก์˜ ์ •ํ™•ํ•œ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๋ถ€ ๋ฐฐ์—ด์—๋Š” ์–ด๋Š ์ •๋„์˜ ํฌ๊ธฐ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค! ์ด๊ฒƒ์€ ์‚ฌ์‹ค์ด๋‹ค. ๊ธฐ๋ณธ ํฌ๊ธฐ๋Š” [10] ์ž…๋‹ˆ๋‹ค .
public static void main(String[] args) {
   ArrayList<Car> cars = new ArrayList<>();
}
๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 2๋จผ์ € ์ƒˆ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ชจ์Šต์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„ , ๋‚ด๋ถ€ ๋ฐฐ์—ด์— ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์ด ์žˆ๋Š”์ง€ , ํ•˜๋‚˜ ์ด์ƒ์˜ ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค . ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด ์ƒˆ ์š”์†Œ๊ฐ€ ๋ชฉ๋ก ๋์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. "๋๊นŒ์ง€"๋ผ๊ณ  ๋งํ•  ๋•Œ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์…€์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค(์ด์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค). ์ด๋Š” ๋งˆ์ง€๋ง‰ ํ˜„์žฌ ์š”์†Œ ์˜†์˜ ์…€์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ•ด๋‹น ์ธ๋ฑ์Šค๋Š” ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค cars.size(). ํ˜„์žฌ ๋ชฉ๋ก์ด ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค( cars.size() = 0). ๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ์…€์— ์ƒˆ ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค 0.
ArrayList<Car> cars = new ArrayList<>();
Car ferrari = new Car("Ferrari 360 Spider");
cars.add(ferrari);
๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 3์—ฌ๊ธฐ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. ์ค‘๊ฐ„, ์ฆ‰ ์—ฌ๋Ÿฌ ์š”์†Œ ์‚ฌ์ด์— ์‚ฝ์ž…์ด ์ˆ˜ํ–‰๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?
public static void main(String[] args) {
   ArrayList<Car> cars = new ArrayList<>();
   Car ferrari = new Car("Ferrari 360 Spider");
   Car bugatti = new Car("Bugatti Veyron");
   Car lambo = new Car("Lamborghini Diablo");
   Car ford = new Car("Ford Modneo");

   cars.add(ferrari);
   cars.add(bugatti);
   cars.add(lambo);

   cars.add(1, ford);//ะดะพะฑะฐะฒะปัะตะผ ford ะฒ ัั‡ะตะนะบัƒ 1, ะบะพั‚ะพั€ะฐั ัƒะถะต ะทะฐะฝัั‚ะฐ
}
์ด๋ฒˆ์—๋„ ๋จผ์ € ๋ฐฐ์—ด์— ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํ•˜๋ฉด ์ƒˆ ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์…€๋ถ€ํ„ฐ ์š”์†Œ๊ฐ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค . ์ธ๋ฑ์Šค 1์„ ์‚ฌ์šฉํ•˜์—ฌ ์…€์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์…€ 3์˜ ์š”์†Œ๊ฐ€ ์…€ 4์—, ์š”์†Œ 2๊ฐ€ ์…€ 3์—, ์š”์†Œ 1์ด ์…€ 2์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 4๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒˆ ์š”์†Œ๊ฐ€ ์ œ์ž๋ฆฌ์— ๋ถ™์—ฌ๋„ฃ์–ด์ง‘๋‹ˆ๋‹ค. ์ด์ „ ์š”์†Œ( bugatti)๋Š” ์ด๋ฏธ ํ•ด๋‹น ์œ„์น˜์—์„œ ์ƒˆ ์œ„์น˜๋กœ ๋ณต์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 5์ด์ œ ๋ฐฐ์—ด์— ์‚ฝ์ž…ํ•  ๊ณต๊ฐ„์ด ์—†์œผ๋ฉด ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ์•„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 6๋ฌผ๋ก , ๋จผ์ € ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด ArrayList'a' ๋‚ด๋ถ€์— (OldArray์˜ ํฌ๊ธฐ * 1.5) + 1 ํฌ๊ธฐ์˜ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜๋Š”๋ฐ, ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ƒˆ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 16์…€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ˜„์žฌ ์š”์†Œ๊ฐ€ ์ฆ‰์‹œ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 7์ด์ „ ๋ฐฐ์—ด์€ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ์— ์˜ํ•ด ์‚ญ์ œ๋˜๊ณ  ์ƒˆ๋กœ ํ™•์žฅ๋œ ๋ฐฐ์—ด๋งŒ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ƒˆ ์š”์†Œ๋ฅผ ์œ„ํ•œ ์—ฌ์œ  ๊ณต๊ฐ„์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์ ์œ ๋œ ์…€ 3์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ต์ˆ™ํ•œ ์ ˆ์ฐจ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค 3์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ๋Š” ํ•œ ์…€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™๋˜๊ณ  ์ƒˆ ์š”์†Œ๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 8์ด์ œ ์‚ฝ์ž…์ด ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค! ์‚ฝ์ž…์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์š”์†Œ ์ œ๊ฑฐ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค . ๊ธฐ์–ตํ•˜์‹œ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ฐฐ์—ด ์ž‘์—…์„ ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด์„ ์‚ญ์ œํ•ด๋„ ๋ฐฐ์—ด์— "๊ตฌ๋ฉ"์ด ๋‚จ์•„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์š”์†Œ๊ฐ€ ์‚ญ์ œ๋  ๋•Œ๋งˆ๋‹ค ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์—ˆ๊ณ  , ์ด๋™์„ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ArrayList๋™์ผํ•œ ์›๋ฆฌ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ด๋ฏธ ์ž๋™์œผ๋กœ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 9๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 10๊ฒฐ๊ตญ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 11์š”์†Œ๊ฐ€ lambo์„ฑ๊ณต์ ์œผ๋กœ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ค‘๊ฐ„ ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์š”์†Œ๋ฅผ ๋ชจ๋‘ ์ด๋™ํ•˜์ง€ ์•Š๊ณ  ์›ํ•˜๋Š” ์š”์†Œ๊ฐ€ ์ œ๊ฑฐ๋˜๋ฏ€๋กœ ๋ชฉ๋ก ๋์—์„œ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๋” ๋น ๋ฅด๋‹ค๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ์–ด๋ ˆ์ด์˜ ํฌ๊ธฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์ €์žฅ ๊ณต๊ฐ„์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์–ด๋ ˆ์ด ํ™•์žฅ์€ ์ผ์ •๋Ÿ‰์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ArrayList๋”ฐ๋ผ์„œ ์ตœ์†Œ 100๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹คํžˆ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ ํฌ๊ธฐ๋กœ ์ƒ์„ฑํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค . 100๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ๋งˆ๋‹ค ๋‚ด๋ถ€ ๋ฐฐ์—ด์€ 6๋ฐฐ๋กœ ํ™•์žฅ๋˜๋ฉฐ ๋งค๋ฒˆ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  • 10๊ฐœ ์š”์†Œ์—์„œ 16๊ฐœ ์š”์†Œ๋กœ
  • 16๊ฐœ ์š”์†Œ์—์„œ 25๊ฐœ ์š”์†Œ๋กœ
  • 25์ผ๋ถ€ํ„ฐ 38์ผ๊นŒ์ง€
  • 38์—์„œ 58๊นŒ์ง€
  • 58์—์„œ 88๊นŒ์ง€
  • 88์—์„œ 133๊นŒ์ง€ (๊ณต์‹์— ๋”ฐ๋ผ (๊ธฐ์กด ๋ฐฐ์—ด์˜ ํฌ๊ธฐ * 1.5) + 1)
๋‹น์—ฐํžˆ ์ด๋Š” ๋ฆฌ์†Œ์Šค ์ธก๋ฉด์—์„œ ์ƒ๋‹นํžˆ ๋น„์Œ‰๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ €์žฅ๋œ ์š”์†Œ์˜ ์ผ๋ถ€(์ ์–ด๋„ ๋Œ€๋žต์ ์ธ) ์ˆ˜๋ฅผ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ํŠน์ • ํฌ๊ธฐ์˜ ๋ฐฐ์—ด๋กœ ๋ชฉ๋ก์„ ์ฆ‰์‹œ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
ArrayList<Car> cars = new ArrayList<>(100);
์ด์ œ 100๊ฐœ ์š”์†Œ์˜ ๋ฐฐ์—ด์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ฆ‰์‹œ ํ• ๋‹น๋˜๋ฉฐ, ์ด๋Š” ํ™•์žฅ ์‹œ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‚ญ๋น„๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋”์šฑ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๋™์ „์˜ ๋ฐ˜๋Œ€ํŽธ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ๋ฐฐ์—ด ์—์„œ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•ด๋„ ArrayListํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ค„์–ด๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ArrayList์˜ˆ๋ฅผ ๋“ค์–ด, ์™„์ „ํžˆ ์ฑ„์›Œ์ง„ 88๊ฐœ ์š”์†Œ์˜ ๋‚ด๋ถ€ ๋ฐฐ์—ด์ด ์žˆ์Šต๋‹ˆ๋‹ค . ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 13ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ 77๊ฐœ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  11๊ฐœ๋งŒ ๋‚จ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 14๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ด๋ฏธ ์ง์ž‘ํ•˜์…จ๋‚˜์š”? ๋ฌผ๋ก , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” 11๊ฐœ์˜ ์…€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด 88๊ฐœ์˜ ์š”์†Œ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค 8๋ฐฐ ๋” ๋งŽ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค! ์ด ๊ฒฝ์šฐ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ํŠน์ˆ˜ ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ์ธ ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ArrayList์žˆ์Šต๋‹ˆ๋‹ค trimToSize(). ๋‚ด๋ถ€ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ํ˜„์žฌ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ์š”์†Œ ์ˆ˜๋กœ "์ ˆ๋‹จ"ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์˜ ์ž‘์—… ArrayList - 15์ด์ œ ํ•„์š”ํ•œ ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค! :)
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION