๐ท List
List๋ Collection ์ธํฐํ์ด์ค๋ฅผ ์์ ๋ฐ์ ์ธํฐํ์ด์ค์ด๋ค.
์๋ฐ์๋ ์ปฌ๋ ์ ํ๋ ์์ํฌ๋ผ๋ ๋ค์ํ ์ ์ฅ ๊ตฌ์กฐ ๋ฉ์๋๋ฅผ ์ ๊ณตํด์ฃผ๋ ์ธํฐํ์ด์ค๊ฐ ์๋ค.
๋ํ์ ์ธ ์ธ๊ฐ์ ๊ตฌ์กฐ๋ก๋
List / Set / Map์ด ์๋ค.
โ๏ธ์ค๋ ์์๋ณผ List
Collection ์ธํฐํ์ด์ค๋ฅผ ์์ ๋ฐ์ ์ธํฐํ์ด์ค์ด๋ค.
โพ List์ ํน์ง
๋ฐ์ดํฐ๋ฅผ ์ฐจ๋ก๋๋ก ๋์ดํด์ ์ฐ์๋ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ด์๋๊ณ ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ์ด๋ค.
์ค๋ณต์ด ํ์ฉ๋๋ค.
โพ ArrayList ์ LinkedList
๋์ List๋ฅผ ๊ตฌํํ ํด๋์ค์ด๋ค.
List๋ ์ธํฐํ์ด์ค์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒดํ๊ฐ ๋ถ๊ฐ๋ฅํ์ฌ ArrayList ํน์ LinkedList๋ก ์ธ์คํด์คํ ํด์ค๋ค.
๐น ArrayList
โ๏ธ ArrayList์ ํน์ง
์ฐ์๋ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ฐจ๋ก๋๋ก ์ ์ฅ๋๋ค.
๋ฐฐ์ด๊ณผ์ ์ฐจ์ด์ ์ ์ฌ์ด์ฆ๊ฐ ๊ณ ์ ๋์ง ์๋๋ค๋๊ฒ์ด๋ค.
๋ฐฐ์ด์ ์ฌ์ด์ฆ๊ฐ ๊ณ ์ ๋๋ฉฐ ์ถ๊ฐ๋ฅผ ํ๋ ค๋ฉด ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํด์ผํ์ง๋ง
ArrayList๋ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋ ์ ๊ธธ์ด๊ฐ ๋์ด๋๋ค.
โ๏ธ ArratList์ ๋จ์
๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ณ ์ฝ์ ํ ๋ ๋ฐฐ์ด์ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ํ๋ ๋ฐ์ดํฐ๋ค์ด ๋ง๋ค.
๋ฐ๋ผ์ ๋น๋ฒํ๊ฒ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ์ ํ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
์๋ฅผ ๋ค์ด ์ค๊ฐ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋ ๊ฒฝ์ฐ
์ญ์ ๋๊ณ ๋จ์ ๋น์๋ฆฌ๋ฅผ ์ฑ์ฐ๊ธฐ ์ํด ๊ทธ ๋ค์ ์๋ ๋ฐ์ดํฐ๋ค์ด ํ์๋ฆฌ์ฉ ์ ๋ถ ์ด๋ํ์ฌ ์ฑ์ด๋ค.
๋ฐ๋ผ์ ๋ฐ์ดํฐ์ ์ถ๊ฐ๋ ์ญ์ ๊ฐ ๋น๋ฒํ ๊ฒฝ์ฐ ArrayList๋ฅผ ์ฌ์ฉํ๋๊ฒ์ ๋น์ถ์ฒํ๋ค.
๐ค ArrayList ๋ ์์์ ํฌ๊ธฐ๊ฐ ๋์ด๋ ๊น?
์๋๋ค
๋ง์ฝ ๊ธธ์ด๊ฐ 10์ด๊ณ 10๊ฐ์ ์์๊ฐ ๋ด๊ฒจ์๋ ArrayList์์ 1๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฒ ๋ ๊ฒฝ์ฐ
์๋์ผ๋ก ๊ธธ์ด๊ฐ 11์ธ ์๋ก์ด ๋ฆฌ์คํธ๋ฅผ ์์ฑํ์ฌ ์ถ๊ฐํ ๋ฐ์ดํฐ๊น์ง ์ถ๊ฐํ ํ ๋ฐํ๋๋ค.
๋ฐ๋ผ์
์ด๋ฌํ ์ผ์ด ๋งค๋ฒ ๋ฐ๋ณต๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ด๋ฐ ๊ธธ์ด๋ฅผ ๋๋ํ๊ฒ ์ก์ ๋๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ค.
๐ ArrayList ์์
โพ ์ ์
ArrayList list = new ArrayList(); List list1 = new ArrayList();โ
๐ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
List๋ก ํ๋ ๊ฒ์ด ๋์ค์ ๋ณํ์ด ์์ ๋ก์ ์ข๋ค.
ํ์ฌ Jeneric์ ์ค์ ํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ด๋ ํ ํ์ ์ด๋ ๋ค ๋ค์ด๊ฐ๋ค.(Object)
โพ ๋ฐ์ดํฐ ์ถ๊ฐ ๋ฐ ์ถ๋ ฅ
list1.add("ํ๊ธธ๋"); list1.add(123.456); list1.add(new Car("pink")); System.out.println(list1.toString());
โพ ์ํ๋ ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ ์ถ๋ ฅ
System.out.println(list1.get(1));
๐ ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค 1 ๋ฒ ์์๋ฅผ ๊ฐ์ ธ์จ๋ค.
โ ์ด๋ ๋ฐํ๋๋ ๊ฐ์ Object์ด๋ค ๋ฐ๋ผ์ ํน์ ํ์ ์ ๋ฐํ๋ฐ์ ์ ์ฅํ ๊ฒฝ์ฐdouble d = (double)list1.get(1);
๐ ํ ๋ณํ์ ํ์ฌ ๋ด์์ฃผ๋๋ก ํ๋ค.
โพ ํฌ๊ธฐ ํ์ธ ๋ฐ ์ฉ๋ ๋ณ๊ฒฝ
- size() : ๊ธธ์ด ํ์ธ
- ensureCapacity() : ์ฉ๋ ๋ณ๊ฒฝ
System.out.println(list1.size());// ๊ธธ์ด ํ์ธ : 3 //์ฉ๋ ๋ณ๊ฒฝ์ ์ํด ArrayList๋ก ๊ตฌํ ArrayList list2 = new ArrayList(); list1.ensureCapacity(20);โ
โ ์ฉ๋์ ArrayList์ ์ ์ฅ๋์ด ์๋ค.
โ List ์ฉ๋์ด๋
์ ์ฌ์ ์ผ๋ก ๊ทธ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ฌ ํ ๋น ํ์ง ์๊ณ ์์ฉ ๊ฐ๋ฅํ ์์์ ๊ฐ์์ด๋ค.
โพ ๋ฐ์ดํฐ ์ถ๊ฐ ๋ฐ ์์
- set : ์์
- add : ์ถ๊ฐ
list1.set(0, 20);โ
๐ index 0๋ฒ์ ๊ฐ์ 20์ผ๋ก ์์
list1.add(100); //๋งจ ๋ค์ชฝ์ ๋ฐ์ดํฐ ์ถ๊ฐ list1.add(2,200); //2๋ฒ์งธ ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ ์ถ๊ฐ
๐นLinkedList
โ๏ธ LinkedList์ ํน์ง
ArrayList๋ ๋ฐ์ดํฐ์ ์ ๋ฐ์ดํธ๊ฐ ๋ง์ ๊ฒฝ์ฐ ๋นํจ์จ์ ์ด๋ฏ๋ก ์ด๋ฌํ ๋จ์ ์ ๋ณด์ํ์ฌ ํ์ํ์๋ค.
๋ ธ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฌ์ธํฐ๋ก ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ์ด๋ฉฐ,
์์๋ ๊ฐ ์๋ค๋ก ๋ค์ ์์์ ๋ค์ ์์์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค
๋ฐ์ดํฐ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค.
โ๏ธ LinkedList์ ๋จ์
์ฐ์์ผ๋ก ๋์ด๋ ArrayList์๋ ๋ฌ๋ฆฌ LinkedList๋ ์ฃผ์๋ก ์ด์ด์ง ๋น์ฐ์์ ์ธ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์
๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ ์ฅํ๋ ๊ฐ์๊ฐ ์ ์ ๋ง์์ง๊ฒฝ์ฐ ์ ๊ทผ ์๊ฐ์ด ์ ์ ๊ธธ์ด์ง๋ค.
๐ LinkedList ์์
โพ ArrayList์ ๊ฑฐ์ ๋
List<String> list = new LinkedList<>(); list.add("apple"); list.add("banana"); list.add("kiwi");
๐ค ArrayList ์ LinkedList ๋ ๊ฐ๊ฐ ์ด๋ค ๊ฒฝ์ฐ์ ์ฌ์ฉํ ๊น?
๋น๊ต | ArrayList | LinkedList |
์์ฐจ์ ์ถ๊ฐ | ๋งค์ฐ ๋น ๋ฆ | ๋น ๋ฆ |
์ค๊ฐ์ ์ถ๊ฐ | ๋งค์ฐ ๋๋ฆผ | ๋งค์ฐ ๋น ๋ฆ |
์์์๋ถํฐ ์ญ์ | ๋งค์ฐ ๋๋ฆผ | ๋งค์ฐ ๋น ๋ฆ |
๋ค์์ ๋ถํฐ ์ญ์ | ๋งค์ฐ ๋น ๋ฆ | ๋น ๋ฆ |
๐ ArrayList
- ๋ฐ์ดํฐ์ ์ ๋ฐ์ดํธ๊ฐ ๋ง์ง ์์ ๊ฒฝ์ฐ or ๋จ์ํ ๋์๋ง ์ ์ฅํ ๊ฒฝ์ฐ
- ์กฐํํด์ผํ ์ผ์ด ๋ง์ ๊ฒฝ์ฐ
๐ LinkedList
- ๋ฐ์ดํฐ์ ์ ๋ฐ์ดํธ๊ฐ ๋น๋ฒํ ๊ฒฝ์ฐ
- ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ผ์ด ์ ์ ๊ฒฝ์ฐ