List 인터페이스를 상속받은 클래스로 크기가 가변적으로 변하는 선형리스트로 배열과 같은 순차리스트이며 인덱스로 내부의 객체를 관리한다. 객체들이 추가되어 저장 용량을 초과한다면 자동으로 부족한 크기만큼 저장 용량이 늘어나는 특징을 가지고 있다.
ArrayList는 기본적인 사용법이 Vector와 같다.
ArrayList list1 = new ArrayList();
list1.add("aaa");
list1.add("bbb");
list1.add(123);
list1.add('k');
list1.add(false);
list1.add(123.45);
System.out.println("size => " + list1.size());
System.out.println("list1 => " + list1.toString());
//size => 6
//list1 => [aaa, bbb, 123, k, false, 123.45]
System.out.println("1번째 데이터 : " + list1.get(1));
//1번째 데이터 : bbb
list1.add(3, "zzz");
System.out.println("list1 => " + list1);
//list1 => [aaa, bbb, 123, zzz, k, false, 123.45]
String temp = (String)list1.set(3, "yyy");
System.out.println("temp => " + temp);
System.out.println("list1 => " + list1);
//temp => zzz
//list1 => [aaa, bbb, 123, yyy, k, false, 123.45]
list1.remove(3); //index가 3번째인 데이터 삭제
System.out.pritnln("list1 => " + list1);
//list1 => [aaa, bbb, 123, k, false, 123.45]
ArrayList<String> list2 = new ArrayList<>();
list2.add("AAAAA");
list2.add("BBBBB");
list2.add("CCCCC");
list2.add("DDDDD");
list2.add("EEEEE");
for(int i = 0; i < list2.size(); i++){
System.out.println(i + " ==> " + list2.get(i));
}
//0 ==> AAAAA
//1 ==> BBBBB
//2 ==> CCCCC
//3 ==> DDDDD
//4 ==> EEEEE
for(String str : list2){
System.out.println(str);
}
//AAAAA
//BBBBB
//CCCCC
//DDDDD
//EEEEE
→ 리스트에 '비교객체'가 있으면 true, 없으면 false를 반환한다.
System.out.println("DDDDD값 존재 여부 : " + list2.contains("DDDDD");
System.out.println("ZZZZZ값 존재 여부 : " + list2.contains("ZZZZZ");
//DDDDD값 존재 여부 : true
//ZZZZZ값 존재 여부 : false
→ 리스트에 '비교객체'가 있으면 '비교객체'가 위치한 index값을 반환하고 '비교객체'가 없으면 -1을 반환한다.
System.out.println("DDDDD의 위치 값 : " + list2.indexOf("DDDDD"));
System.out.println("ZZZZZ의 위치 값 : " + list2.indexOf("ZZZZZ"));
//DDDDD의 위치 값 : 3
//ZZZZZ의 위치 값 : -1
→ 리스트 안의 데이터를 배열로 변환하여 반환한다.
→ 기본적으로는 Object형 배열로 반환한다.
Object[] strArr = list2.toArray();
System.out.println("배열의 개수 : " + strArr.length);
//배열의 개수 : 5
for(int i = 0; i < strArr.length; i++){
System.out.println(i + " ===> " + strArr[i]);
}
//0 ===> AAAAA
//1 ===> BBBBB
//2 ===> CCCCC
//3 ===> DDDDD
//4 ===> EEEEE
→ 제네릭 타입의 배열로 변환해서 반환한다.
String[] strArr2 = list2.toArray(new String[0]);
for(String str : strArr2){
System.out.println(str);
}
//AAAAA
//BBBBB
//CCCCC
//DDDDD
//EEEEE