● ArrayList 선언
- ArrayList 리스트이름 = new ArrayList<클래스타입>();
※ <> : 제네릭
- jdk 5버전 이후부터 도입된 문법
- 클래스 내부에서 사용할 타입을 외부에서 지정하는 기법
- add() 메소드를 만들 때, 매개변수의 타입을 예측할 수 없다.
따라서 해당 부분을 제네릭으로 설정해 두고, 사용자가 ArrayList를 만들면서 타입을 <> 안에 넘겨준다.
● ArrayList vs 일반 배열
- ArrayList는 크기를 마음대로 변화할 수 있다.
- 속도면에서는 일반 배열이 조금 더 빠르다.
실습(ArrayList)
1. ArrayList를 Integer 타입으로 선언하여 메소드 실행
- add(요소)
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Integer> ar = new ArrayList<>();
// add(요소)
ar.add(10);
ar.add(20);
ar.add(30);
ar.add(40);
ar.add(10);
System.out.println(ar);
}
}

- add(인덱스, 요소)
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Integer> ar = new ArrayList<>();
// add(요소)
ar.add(10);
ar.add(20);
ar.add(30);
ar.add(40);
ar.add(10);
ar.add(2, 1000);
System.out.println(ar);
}
}

- get(인덱스)
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Integer> ar = new ArrayList<>();
// add(요소)
ar.add(10);
ar.add(20);
ar.add(30);
ar.add(40);
ar.add(10);
System.out.println(ar.get(0));
}
}

- remove(인덱스)
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Integer> ar = new ArrayList<>();
// add(요소)
ar.add(10);
ar.add(20);
ar.add(30);
ar.add(40);
ar.add(10);
ar.remove(1);
System.out.println(ar);
}
}

- size()
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Integer> ar = new ArrayList<>();
// add(요소)
ar.add(10);
ar.add(20);
ar.add(30);
ar.add(40);
ar.add(10);
System.out.println(ar.size());
for(int i = 0; i < ar.size(); i++) {
System.out.println(ar.get(i));
}
System.out.println("--------------------");
for(Integer num : ar) {
System.out.println(num);
}
}
}

2. ArrayList를 String 타입으로 선언하여 메소드 실행
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
System.out.println(names.size());
System.out.println(names.isEmpty());
}
}
