Array, 배열이란 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스(index)를 부여해놓은 자료구조이다.
배열의 각 인덱스는 각 항목의 데이터를 읽거나 저장하는데 사용되며, 아래와 같이 배열 이름 옆에 있는 대괄호 [ ]에 기입된다. 인덱스는 0부터 시작한다.
String[] weeks = new String[7]; // 길이가 7인 array 생성
weeks[0] = "월";
weeks[1] = "화";
weeks[2] = "수";
weeks[3] = "목";
weeks[4] = "금";
weeks[5] = "토";
weeks[6] = "일";
ArrayList, 리스트란 자바의 List 인터페이스를 상속받은 여러 클래스 중 하나이다. 배열과 동일하게 연속된 메모리 공간을 사용하며 인덱스는 0부터 시작한다.
import java.util.ArrayList;
ArrayList weeks = new ArrayList();
weeks.add("월");
weeks.add("화");
weeks.add("수");
Array와 ArrayList의 가장 큰 차이점은 '크기'이다.
Array는 배열의 크기가 고정되어 있는 반면 ArrayList는 배열의 크기가 가변적이다.
ArrayList를 권장하는 이유도 아마 ArrayList가 가변적이기 때문이지 않을까 생각된다....
출처 :
https://hongong.hanbit.co.kr/java-%EC%9E%90%EB%B0%94-%EB%B0%B0%EC%97%B4array-%EC%84%A0%EC%96%B8%ED%95%98%EA%B3%A0-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0/, https://psychoria.tistory.com/765
안녕하세요, 릴리 님. 팀 201의 민트입니다!
Array와 ArrayList의 차이점에 대해서 잘 정리하셨네요.
피드백 남기겠습니다!
ArrayList는 고정적인 크기를 가지지 않고, 크기가 동적으로 늘어날 수 있다는 점을 잘 작성하신 것 같아요.
그렇다면 ArrayList의 크기는 어느 시점에, 어느정도의 크기를 늘릴까요??
(프리코스 진행하시느라 바쁘실 테니 미리 답을 남기겠습니다.)
ArrayList는 원소를 추가하여 size가 capacity(ArrayList의 크기)와 같아지는 시점에, capacity를 (capacity + capacity/2) 만큼의 크기로 늘립니다.
잘 정리된 내용이 있어서 블로그 링크 남깁니다.
추가로 말씀드리고 싶은 내용은, ArrayList는 Collection의 API를 사용할 수 있다는 점입니다.
이게 무슨 말인지 Array와 ArrayList에 각각 원소를 추가하는 예시를 통해 살펴보죠.
위와 같이, ArrayList는 addAll() 이라는 메서드를 통해 원소를 추가할 수 있습니다.
Array의 원소 추가 방식에 비해 훨씬 깔끔하죠?
그리고, 다른 List 구현체 중 하나인 LinkedList도 예시를 통해 살펴봅시다!
LinkedList 역시 addAll() 이라는 메서드를 사용하고 있죠.
이는 ArrayList와 LinkedList가 모두 Collection을 상속하고 있기 때문입니다.
addAll() 메서드는 Collection에 정의되어 있기 때문에 이를 상속하는 ArrayList, LinkedList가 모두 같은 메서드를 사용할 수 있는 것이죠.
이에 대한 내용을 더 공부하고 싶다면, Java의 Collection에 대해 알아보시면 좋을 것 같습니다.
해당 키워드 관련 블로그도 남깁니다. 프리코스 진행하시느라 매우 바쁘겠지만, 시간적 여유가 되신다면 가볍게 훑어보셔도 좋습니다 ㅎㅎ
이번 주차 피드백은 이정도로 마무리하겠습니다.
더 궁금한 내용이 있거나, 물어보고 싶은 것이 있다면 언제든 201 앱을 통해서 채팅 남겨주세요! 함께 고민해보겠습니다.
프리코스로 바쁜 와중에도 스터디 활동하느라 고생 많으셨습니다. 남은 프리코스도 파이팅입니다👏
다음 주차 스터디에서 봬요!!