ArrayList는 Java Collection 프레임워크의 일부이며 java.util 패키지에 소속되어 있다.
List 인터페이스의 구현 중 하나로 Resizable한 것이 특징이다. (확장 가능한 배열)
ArrayList는 Thread safe하지 않고, Vector는 Thread safe 하다. -> ArrayList의 객체는 여러 명이 값을 변경하려고 하면 문제가 발생할 수 있고, Vector는 그렇지 않다는 것.
ArrayList의 상속 관계
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.ArrayList<E>

'<? extends E>' 는 c 매개변수의 타입이 E와 E를 상속하는 자식 클래스가 됨을 의미한다. 제네릭 참고 링크
import java.util.ArrayList;
public class ListSample {
public static void main(String[] args) {
// ArrayList로 타입을 정해주었지만, 추후에 Vector나 다른 클래스로 변경을 위해서 List<>로 타입을 지정해주면 유연하게 사용 가능하다.
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("hello");
arrayList.add("world");
arrayList.add(1, "Java is too hard")
System.out.println("arrayList = " + arrayList);
}
}
// 결과
// arrayList = [hello, Java is too hard, world]
여기서 중요한 것은 매개 변수가 없는 toArray() 메서드는 Object 타입의 배열로만 리턴을 한다. 그러므로 제네릭을 사용한 ArrayList를 배열로 생성핼 때에 이 메서드를 사용하는 것은 좋지 않다. - 자바의 신 p.603-
import java.util.ArrayList;
import java.util.Arrays;
public class ListSample {
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("hello");
arrayList.add("world");
arrayList.add(1, "Java is too hard");
System.out.println("arrayList = " + arrayList);
System.out.println("size = " + arrayList.size());
String[] list = arrayList.toArray(new String[3]);
System.out.println("list = " + Arrays.toString(list));
System.out.println("list = " + list);
String firstEl = arrayList.get(0);
System.out.println("firstEl = " + firstEl);
}
}
// 결과
// arrayList = [hello, Java is too hard, world]
// size = 3
// list = [hello, Java is too hard, world]
// list = [Ljava.lang.String;@96532d6
// firstEl = hello
1. clear()
2. remove(int index)
3. remove(Object o)
4. removeAll(Collection<?> c)
import java.util.ArrayList;
import java.util.Arrays;
public class ListSample {
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("A");
arrayList.add("B");
arrayList.add("C");
arrayList.add("D");
arrayList.add("E");
arrayList.add("A");
arrayList.remove(1); // arrayList = [A, C, D, E, A]
arrayList.remove("A"); // arrayList = [C, D, E, A]
ArrayList<String> tempList = new ArrayList<>();
tempList.add("A");
tempList.add("C");
arrayList.removeAll(tempList); // arrayList = [D, E]
}
}
1. set(int index, E element)
1. size()
2. indexOf(Object o)
3. lastIndexOf(Object o)
배열, String의 길이 및 개수를 가져올 때는 .length를 사용하지만 Collection을 구현한 인터페이스는 size() 메소드를 통해서 데이터의 개수를 확인 가능하다.
자바의신 vol.2 - 책 링크
https://crazykim2.tistory.com/558
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/ArrayList.html
https://blog.naver.com/PostView.nhn?blogId=zzang9ha&logNo=222060882573&categoryNo=10&parentCategoryNo=0&viewDate=¤tPage=2&postListTopCurrentPage=&from=thumbnailList&userTopListOpen=true&userTopListCount=10&userTopListManageOpen=false&userTopListCurrentPage=2