코딩테스트를 풀다보면 배열을 리스트 형태로 변환할때가 많은데 아래와 같이 사용하였다.
List<String> aaList = Arrays.asList("a", "b", "c", "d", "e");
aaList.remove(0);
당연히 List를 반환하므로 remove(), add() 등 ArrayList의 메소드를 사용가능 할 줄 알았지만 단순 선언만으론 해당 기능들을 사용할 수 없다.
해당 이미지는 asList()에 대한 설명이다. `Arrays.asList` 를 사용하여 생성된 리스트는 고정 크기이다. 즉 리스트의 크기를 변경(추가 또는 제거)할 수 없다. 리스트의 요소의 변경만 가능한 배열의 특성을 가지고 있다고 생각하면 된다.
그러기 때문에 다음과 같은 방법을 이용해야 한다.
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
public class Example {
public static void main(String[] args) {
// 고정 크기의 리스트 생성
List<String> fixedList = Arrays.asList("Larry", "Moe", "Curly");
// 고정 크기의 리스트로부터 가변적인 ArrayList 생성
List<String> mutableList = new ArrayList<>(fixedList);
// 요소 추가
mutableList.add("Shemp");
// 요소 제거
mutableList.remove("Larry");
// 결과 출력
System.out.println(mutableList);
}
}
ArrayList 처럼 가변적으로 사용하기 위해선 `ArrayList 생성자`를 이용해 ` Arrays.asList` 로 생성된 리스트를 전달하여 새로운 ArrayList 인스턴스를 생성해주면 된다.
'Language > Java' 카테고리의 다른 글
[Java] Math 클래스 (1) | 2024.11.15 |
---|---|
[Java] startsWith와 endsWith (0) | 2024.11.15 |
[java] 비트 연산자와 2진법 (0) | 2024.07.09 |
[JAVA] 람다식과 함수형 인터페이스 (0) | 2024.05.02 |
[인프런 워밍업 스터디 클럽 1기] 어노테이션의 역할 (0) | 2024.04.30 |