개발/Java

[Java] 자바 - 컬렉션 - ArrayList

하더 2022. 9. 25. 16:08

 

< ArrayList >

 

- List계열 : 담고자 하는 값(Value)만 저장 / 저장시 순서 유지(index) / 중복값 허용

 

[ 표현법 ]

1. 크기를 지정하지 않고 생성

ArrayList 객체명 = new ArrayList();

2. 크기를 지정하고 생성

ArrayList 객체명 = new ArrayList(크기);

 

> 생성

ArrayList list = new ArrayList(3); // 크기 지정 가능

> 값 추가 - add(E e) : 인자로 전달된 요소를 해당 리스트 마지막에 추가해주는 메소드

                  add(int index, E e) : 리스트의 index자리에 전달된 e를 추가시켜주는 메소드

list.add("끝"); // 객체 전달 가능
list.add(0, "시작"); // 인덱스로 위치 지정 가능

> 값 수정 - set(int index, E e) : 리스트의 index자리값을 전달된 e로 변경해주는 메소드

list.set(0, "시~~~작!");

> 값 삭제 - remove(int index) : 리스트에서 index자리에 담긴 값을 삭제해주는 메소드

list.remove(0);
// 범위를 벗어나는 인덱스값을 넣으면 오류 발생(IndexOutOfBoundsException)

> 크기 반환 - size() : 리스트의 크기를 반환해주는 메소드(= 담겨있는 요소의 개수)

System.out.println("리스트에 담긴 요소의 개수 : " + list.size()); 
System.out.println("리스트의 마지막 인덱스 번호 : " + (list.size() - 1)); // 우선순위 맞춰주기!
list.remove(list.size() - 1); // 마지막데이터 삭제

> 값 반환 - get(int index) : E

// 내가만든 Music 클래스 
Music m1 = (Music)list.get(0); // 강제형변환(다운캐스팅: 부모클래스 → 자식클래스)
System.out.println(m1);

// 향상된 for문 - 출력문만 사용 가능
// for(값을 받아줄 변수 : 순차적으로 접근할 배열 또는 컬렉션)
for(Object c: list) { // Object로 반환되기 때문에 
    System.out.println(((Music)c).getTitle()); // 강제형변환
}

> 값 부분 추출 - subList(int index1, int index2) : List : index1부터 index2까지의 값 추출하여 새로운 리스트로 반환

List sub = list.subList(1, 3); // import java.util
System.out.println(sub);

> 리스트 + 리스트 - addAll(Collection c) : 해당 리스트 뒤에 다른 컬렉션에 있는 데이터들을 추가해주는 메소드

list.addAll(sub);

> 빈 리스트 확인 -  isEmpty() : 비어있으면 true / 값이 들어있으면 false 반환

System.out.println(list.isEmpty());

> 리스트 비우기 - clear() : 해당 리스트를 통째로 비워주는 메소드

list.clear();