์๋
ํ์ธ์! ์ค๋ ๊ฐ์๋
ArrayList
์ด์ ๊ฐ์์ ๋นํด ํํธ์ผ๋ก๋ ๊ฐ๋จํ๋ฉด์๋ ํํธ์ผ๋ก๋ ๋ ์ด๋ ค์ธ ๊ฒ์
๋๋ค. ์ค๋์ "๋ด๋ถ"๋ฅผ ์ดํด๋ณด๊ณ ArrayList
์์
์ค์ ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ์ฐ๊ตฌํ๊ธฐ ๋๋ฌธ์ ๋ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ฉด์, ์ด๋ฒ ๊ฐ์์๋ ์ฝ๋๊ฐ ๊ฑฐ์ ์์ ๊ฒ์
๋๋ค. ๋๋ถ๋ถ ๊ทธ๋ฆผ๊ณผ ์ค๋ช
์
๋๋ค. ์, ๊ฐ๋ด
์๋ค :) ์ด๋ฏธ ์๊ณ ์๋ฏ์ด ArrayList
'a ๋ด๋ถ์๋ ๋ฐ์ดํฐ ์ ์ฅ์ ์ญํ ์ ํ๋ ์ผ๋ฐ ๋ฐฐ์ด์ด ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ชฉ๋ก์ ์ ํํ ํฌ๊ธฐ๋ฅผ ์ง์ ํ์ง ์์ต๋๋ค. ํ์ง๋ง ๋ด๋ถ ๋ฐฐ์ด์๋ ์ด๋ ์ ๋์ ํฌ๊ธฐ๊ฐ ์์ด์ผ ํฉ๋๋ค! ์ด๊ฒ์ ์ฌ์ค์ด๋ค. ๊ธฐ๋ณธ ํฌ๊ธฐ๋ [10] ์
๋๋ค .
public static void main(String[] args) {
ArrayList<Car> cars = new ArrayList<>();
}
๋จผ์ ์ ์์๋ฅผ ์ถ๊ฐํ๋ ๋ชจ์ต์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฐ์ , ๋ด๋ถ ๋ฐฐ์ด์ ์ถฉ๋ถํ ๊ณต๊ฐ์ด ์๋์ง , ํ๋ ์ด์์ ์์๊ฐ ๋ค์ด๊ฐ ์ ์๋์ง ํ์ธํฉ๋๋ค . ๊ณต๋ฐฑ์ด ์์ผ๋ฉด ์ ์์๊ฐ ๋ชฉ๋ก ๋์ ์ถ๊ฐ๋ฉ๋๋ค. "๋๊น์ง"๋ผ๊ณ ๋งํ ๋ ๋ฐฐ์ด์ ๋ง์ง๋ง ์
์ ์๋ฏธํ๋ ๊ฒ์ ์๋๋๋ค(์ด์ํ ๊ฒ์
๋๋ค). ์ด๋ ๋ง์ง๋ง ํ์ฌ ์์ ์์ ์
์ ๋ํ๋
๋๋ค. ํด๋น ์ธ๋ฑ์ค๋ ์ ๊ฐ์ต๋๋ค cars.size()
. ํ์ฌ ๋ชฉ๋ก์ด ๋น์ด ์์ต๋๋ค( cars.size() = 0
). ๋ฐ๋ผ์ ์ธ๋ฑ์ค๊ฐ ์๋ ์
์ ์ ์์๊ฐ ์ถ๊ฐ๋ฉ๋๋ค 0
.
ArrayList<Car> cars = new ArrayList<>();
Car ferrari = new Car("Ferrari 360 Spider");
cars.add(ferrari);
์ฌ๊ธฐ์์๋ ๋ชจ๋ ๊ฒ์ด ๋ช
ํํฉ๋๋ค. ์ค๊ฐ, ์ฆ ์ฌ๋ฌ ์์ ์ฌ์ด์ ์ฝ์
์ด ์ํ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
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์ ๋ณต์ฌ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ์์๊ฐ ์ ์๋ฆฌ์ ๋ถ์ฌ๋ฃ์ด์ง๋๋ค. ์ด์ ์์( bugatti
)๋ ์ด๋ฏธ ํด๋น ์์น์์ ์ ์์น๋ก ๋ณต์ฌ๋์์ต๋๋ค. ์ด์ ๋ฐฐ์ด์ ์ฝ์
ํ ๊ณต๊ฐ์ด ์์ผ๋ฉด ์ด ํ๋ก์ธ์ค๊ฐ ์ด๋ป๊ฒ ๋ฐ์ํ๋์ง ์์ ๋ณด๊ฒ ์ต๋๋ค. ๋ฌผ๋ก , ๋จผ์ ์ถฉ๋ถํ ๊ณต๊ฐ์ด ์๋์ง ํ์ธํฉ๋๋ค. ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ค๊ณ ํ๋จ๋๋ฉด ArrayList
'a' ๋ด๋ถ์ (OldArray์ ํฌ๊ธฐ * 1.5) + 1 ํฌ๊ธฐ์ ์๋ก์ด ๋ฐฐ์ด์ด ์์ฑ๋๋๋ฐ, ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 16์
์ด ๋ฉ๋๋ค. ๋ชจ๋ ํ์ฌ ์์๊ฐ ์ฆ์ ๋ณต์ฌ๋ฉ๋๋ค. ์ด์ ๋ฐฐ์ด์ ๊ฐ๋น์ง ์์ง๊ธฐ์ ์ํด ์ญ์ ๋๊ณ ์๋ก ํ์ฅ๋ ๋ฐฐ์ด๋ง ๋จ๊ฒ ๋ฉ๋๋ค. ์ด์ ์ ์์๋ฅผ ์ํ ์ฌ์ ๊ณต๊ฐ์ด ์๊ฒผ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ ์ ๋ ์
3์ ๋ถ์ฌ๋ฃ์ต๋๋ค. ์ด์ ์ต์ํ ์ ์ฐจ๊ฐ ์์๋ฉ๋๋ค. ์ธ๋ฑ์ค 3์์ ์์ํ๋ ๋ชจ๋ ์์๋ ํ ์
์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋๋๊ณ ์ ์์๊ฐ ์๋์ผ๋ก ์ถ๊ฐ๋ฉ๋๋ค. ์ด์ ์ฝ์
์ด ์ฑ๊ณตํ์ต๋๋ค! ์ฝ์
์ ์ ๋ฆฌํ์ต๋๋ค. ์ด์ ์์ ์ ๊ฑฐ ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค . ๊ธฐ์ตํ์๋ ๊ฒ์ฒ๋ผ ๋ฐฐ์ด ์์
์ ํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ฐฐ์ด์ ์ญ์ ํด๋ ๋ฐฐ์ด์ "๊ตฌ๋ฉ"์ด ๋จ์ ์์์ต๋๋ค. ์ ์ผํ ํด๊ฒฐ์ฑ
์ ์์๊ฐ ์ญ์ ๋ ๋๋ง๋ค ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ ๊ฒ์ด ์๊ณ , ์ด๋์ ์ํ ์ฝ๋๋ฅผ ์ง์ ์์ฑํด์ผ ํ์ต๋๋ค. ArrayList
๋์ผํ ์๋ฆฌ๋ก ์๋ํ์ง๋ง ์ด ๋ฉ์ปค๋์ฆ์ ์ด๋ฏธ ์๋์ผ๋ก ๊ตฌํ๋์์ต๋๋ค. ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๊ฒฐ๊ตญ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค. ์์๊ฐ 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๊ฐ ์์์ ๋ด๋ถ ๋ฐฐ์ด์ด ์์ต๋๋ค . ํ๋ก๊ทธ๋จ์ด ์๋ํ๋ ๋์ 77๊ฐ ์์๋ฅผ ์ ๊ฑฐํ๊ณ 11๊ฐ๋ง ๋จ์ต๋๋ค. ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์ด๋ฏธ ์ง์ํ์
จ๋์? ๋ฌผ๋ก , ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋นํจ์จ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค! ์ฐ๋ฆฌ๋ 11๊ฐ์ ์
๋ง ์ฌ์ฉํ๋ ๋ฐ๋ฉด 88๊ฐ์ ์์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ์ต๋๋ค. ์ด๋ ํ์ํ ๊ฒ๋ณด๋ค 8๋ฐฐ ๋ ๋ง์ ๊ฒ์
๋๋ค! ์ด ๊ฒฝ์ฐ ์ต์ ํ๋ฅผ ์ํํ๋ ค๋ฉด ํน์ ํด๋์ค ๋ฉ์๋์ธ ๋ฅผ ์ฌ์ฉํ ์ ArrayList
์์ต๋๋ค trimToSize()
. ๋ด๋ถ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ํ์ฌ ๋ฐฐ์ด์ ์ ์ฅ๋ ์์ ์๋ก "์ ๋จ"ํฉ๋๋ค. ์ด์ ํ์ํ ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋ฉ๋๋ค! :)
GO TO FULL VERSION