언어/자바

[Java] ArrayList 메서드

believekim 2025. 3. 19. 18:51

 

ArrayList는 배열과 달리 배열의 크기가 변할 수 있다.
List 인터페이스를 구현하고 있어서 List의 메서드 모두 사용 가능

 


 

1. ArrayList 다이어그램

  •  Iterable, Collection, List 인터페이스를 상속


 

2. ArrayList 메서드

  • 순서유지, 중복허용, null값 가능
  • 자주 사용하는 메서드는 빨간색
메서드 설명
add(E e) 리스트 끝에 요소 추가
add(int index, E element) 특정 위치에 요소 추가
addAll(Collection<? extends E> c) 컬렉션의 모든 요소 추가
addAll(int index, Collection<? extends E> c) 특정 위치부터 컬렉션 요소 추가
clear() 모든 요소 제거
clone() 리스트 복사본 반환
contains(Object o) 특정 요소 포함 여부 확인
containsAll(Collection<?> c) 컬렉션의 모든 요소가 포함되어 있는지 확인
equals(Object o) 다른 리스트와 내용이 같은지 비교
get(int index) 특정 위치 요소 반환
indexOf(Object o) 처음 등장하는 요소의 인덱스 반환
lastIndexOf(Object o) 마지막으로 등장하는 요소의 인덱스 반환
isEmpty() 리스트가 비어있는지 확인
iterator() Iterator 반환 (순회용)
listIterator() ListIterator 반환 (양방향 순회)
listIterator(int index) 특정 위치부터 ListIterator 반환
remove(int index) 특정 위치 요소 삭제
remove(Object o) 처음 만나는 해당 요소 삭제
removeAll(Collection<?> c) 컬렉션에 있는 모든 요소 삭제
retainAll(Collection<?> c) 컬렉션에 없는 요소는 모두 삭제 (교집합만 남기기)
replaceAll(UnaryOperator<E> operator) 모든 요소 일괄 수정 (람다로 처리)
set(int index, E element) 특정 위치의 요소를 새 값으로 교체
size() 리스트의 크기 반환
sort(Comparator<? super E> c) 지정된 비교자로 리스트 정렬
spliterator() Spliterator 반환 (병렬 처리용)
stream() Stream 생성 (람다 처리에 유용)
parallelStream() 병렬 Stream 생성
subList(int fromIndex, int toIndex) 특정 범위 부분 리스트 반환
toArray() Object 배열로 변환
toArray(T[] a) 지정한 타입의 배열로 변환
hashCode() 리스트의 해시코드 반환

 

 

3. 주요 메서드 예시

  • add(): 값 추가
list.add("Apple");
System.out.println(list); // ["Apple"]

 

 

  • get(): 값 가져오기
String fruit = list.get(0);   // 인덱스 0의 요소 가져오기
System.out.println(fruit);    // Apple

 

 

  • set(): 값 변경
list.set(0, "Blueberry");     // 인덱스 0의 요소를 "Blueberry"로 변경

 

 

  • remove(): 값 삭제
list.remove(0);               // 인덱스 0의 요소 삭제
System.out.println(list);     // []

list.remove("Apple");        // "Apple" 값으로 삭제
System.out.println(list);     // []

 

 

  • size(): 개수 확인
list.size();

 

 

  • contains(): 특정 값이 있는지 확인
list.contains("Apple"); // true나 false 반환

 

 

  • clear(): 전체 삭제
list.clear();
System.out.println(list);     // []
System.out.println(list.size());  // 0

 

 

4. List 구현체

  • ArrayList는 List의 구현체이다. 그래서 다른 구현체들과 비교해보았다.
구현체 정렬 여부 순서 유지 속도 내부구조 특징
ArrayList X O 검색 빠름, 삽입/삭제 느림 배열 가장 많이 사용
LinkedList X O 검색 느림, 삽입/삭제 빠름 이중 연결 리스트 삽입/삭제 많을 때
Vector X O ArrayList와 유사, 동기화 O 배열 멀티스레드 환경용
Stack X (LIFO) O Vector 기반 배열 후입선출 자료구조