ArrayList는 List 인터페이스를 상속받은 클래스로 크기가 가변적으로 변하는 선형리스트입니다. 일반적인 배열과 같은 순차리스트이며 인덱스로 내부의 객체를 관리한다는점등이 유사하지만 한번 생성되면 크기가 변하지 않는 배열과는 달리 ArrayList는 객체들이 추가되어 저장 용량(capacity)을 초과한다면 자동으로 부족한 크기만큼 저장 용량(capacity)이 늘어난다는 특징을 가지고 있습니다.

ArrayList는 java.util 패키지에 소속되어 있으며 Collection 프레임워크의 일부이기 때문에 사용법을 위주로 알아보겠습니다.
ArrayList list = new ArrayList();
//타입 미설정 Object로 선언된다.
ArrayList<Student> members = new ArrayList<Student>();
//타입설정 Student객체만 사용가능
ArrayList<Integer> num = new ArrayList<Integer>();
//타입설정 int타입만 사용가능
ArrayList<Integer> num2 = new ArrayList<>();
//new에서 타입 파라미터 생략가능
ArrayList<Integer> num3 = new ArrayList<Integer>(10);
//초기 용량(capacity)지정
ArrayList<Integer> list2 = new ArrayList<Integer>(Arrays.asList(1,2,3));
//생성시 값추가
🧚♀️ ArrayList에 값을 추가하려면 ArrayList의 add(index, value) 메소드를 사용하면 됩니다
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3); //값 추가
list.add(null); //null값도 add가능
list.add(1,10); //index 1에 10 삽입
ArrayList<Student> members = new ArrayList<Student>();
Student student = new Student(name,age);
//name과 age 변수는 미리 정의되어 있다고 가정하며,
//이 값을 이용하여 Student 객체를 초기화합니다.
members.add(student);
members.add(new Student("kjw",25));
index중간에 값을 추가하면 해당 인덱스부터 마지막 인덱스까지 모두 1씩 뒤로 밀려납니다.
그렇기 때문에 중간에 값을 추가할 경우가 있다면 ArrayList보다는 LinkedList를 활용하는것이 좋은 방법입니다.
🧚♀️ ArrayList에 값을 제거하려면 ArrayList의 remove(index) 메소드를 사용하면 됩니다. 또한 모든 값을 제거하려면 clear() 메소드를 사용하면 됩니다.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
list.remove(1); //index 1 제거
list.clear(); //모든 값 제거
🧚♀️ ArrayList의 크기를 구하려면 ArrayList의 size() 메소드를 사용하면 됩니다.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
System.out.println(list.size());
//list 크기 : 3
🧚♀️ ArrayList의 get(index) 메소드를 사용하면 ArrayList의 원하는 index의 값이 리턴됩니다. 리스트의 전체 값을 출력하고 싶으면 for문을 통해 출력 가능합니다.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
System.out.println(list.get(0));
//0번째 index 출력
for(Integer i : list) {
System.out.println(i); //for문을 통한 전체출력
}
🧚♀️ ArrayList에서 찾고자 하는 값을 검색하려면 ArrayList의 contains(value) 메소드를 사용하면 됩니다. 만약 값이 있다면 true가 리턴되고 값이 없다면 false가 리턴됩니다.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
System.out.println(list.contains(1));
//list에 1이 있는지 검색 : true
System.out.println(list.indexOf(1));
//1이 있는 index반환 없으면 -1 (값이 있는 index를 찾을 경우)