ArrayList
는 List를 상속받은 클래스로 순차적으로 자료를 저장하는 선형 자료구조이다. 배열처럼 인덱스를 기반으로 요소에 접근하지만, 배열과 달리 ArrayList는 크기가 가변적이다.
ArrayList<T> arrList = new ArrayList<T>();
ArrayList<T> arrList = new ArrayList<>();
ArrayList<T> arrList = new ArrayList<T>(100);
위와 같이 ArrayList를 선언할 수 있으며, 생성자 부분의 제네릭타입은 생략이 가능하다. 또, 생성자 매개변수로 초기용량을 지정해줄 수 있다. 만약 ArrayList를 사용하다가 초기용량을 초과하면 자동으로 용량이 늘어난다.
ArrayList<Integer> arrList = new ArrayList<>();
arrList.add(100); //맨뒤에 요소 추가
arrList.add(300); //맨뒤에 요소 추가
arrList.add(1,200); // 1번 인덱스에 200이라는 값 추가
//기존에 있던 1번 인덱스의 값은 뒤로 밀림
ArrayList<Integer> arrList = new ArrayList<>();
arrList.remove(0); //0번째 인덱스에 있는 값 제거
arrList.clear(); //모든 값 제거
ArrayList<Integer> arrList = new ArrayList<>();
arrList.get(3); //3번째 인덱스에 있는 값 반환
arrList.contains(100); // 100이라는 값이 있는지 boolean으로 반환
arrList.indexOf(100); //100이라는 값이 가지는 인덱스를 반환, 없으면 -1
arrList.size(); //ArrayList의 크기 반환
인덱스를 통해 요소에 접근하기 때문에 검색이 빠름
O(1)
그러나 특정 인덱스에 삽입하거나 삭제하려면 한칸씩 밀어야하기 때문에 시간이 오래걸림worst case- O(n)