728x90
반응형
Arrays.asList는 자바에서 배열을 List로 변환하는 유용한 메서드입니다. 이 메서드는 주로 배열을 리스트로 변환하여 리스트가 제공하는 다양한 기능을 사용하고자 할 때 사용됩니다.
Arrays.asList 메서드의 주요 특징
- 배열을 리스트로 변환: Arrays.asList(T... a) 메서드는 배열을 인자로 받아 해당 배열을 기반으로 하는 고정 크기의 List를 반환합니다. 이 리스트는 배열을 기반으로 하므로 리스트의 크기는 변경할 수 없지만, 배열의 요소는 변경할 수 있습니다.
- 고정 크기 리스트: Arrays.asList로 생성된 리스트는 고정된 크기를 가지며, 새로운 요소를 추가하거나 기존 요소를 제거할 수 없습니다. 이러한 작업을 시도하면 UnsupportedOperationException이 발생합니다.
- 원본 배열과 연결: Arrays.asList로 생성된 리스트는 원본 배열과 연결되어 있습니다. 따라서 리스트의 요소를 변경하면 원본 배열도 변경되고, 원본 배열을 변경하면 리스트의 요소도 변경됩니다.
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
String[] fruitsArray = {"Apple", "Banana", "Cherry"};
// 배열을 리스트로 변환
List<String> fruitsList = Arrays.asList(fruitsArray);
// 리스트의 요소를 변경
fruitsList.set(0, "Mango");
// 변경된 리스트와 배열을 출력
System.out.println("List: " + fruitsList); // List: [Mango, Banana, Cherry]
System.out.println("Array: " + Arrays.toString(fruitsArray)); // Array: [Mango, Banana, Cherry]
// 고정 크기 리스트이므로 추가/삭제 시도 시 예외 발생
// fruitsList.add("Orange"); // UnsupportedOperationException 발생
// fruitsList.remove("Banana"); // UnsupportedOperationException 발생
}
}
주의사항
- Arrays.asList로 생성된 리스트는 크기가 고정되어 있기 때문에, 리스트에 요소를 추가하거나 제거하려고 하면 UnsupportedOperationException이 발생합니다.
- Arrays.asList로 생성된 리스트는 배열의 뷰(View)로 동작하기 때문에, 리스트의 내용을 변경하면 원본 배열도 함께 변경됩니다.
ArrayList로 변환하기
고정 크기 리스트가 아닌, 요소 추가/삭제가 가능한 리스트가 필요하다면 Arrays.asList로 생성된 리스트를 ArrayList 생성자에 전달하여 새로운 리스트를 만들어야 합니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
String[] fruitsArray = {"Apple", "Banana", "Cherry"};
// 배열을 리스트로 변환하고 ArrayList로 생성
List<String> fruitsList = new ArrayList<>(Arrays.asList(fruitsArray));
// 요소 추가 가능
fruitsList.add("Orange");
System.out.println("List: " + fruitsList); // List: [Apple, Banana, Cherry, Orange]
}
}
728x90
반응형
'JAVA' 카테고리의 다른 글
[JAVA] Arrays.asList와 contains 메서드 (0) | 2024.08.21 |
---|---|
[JAVA] Stream API anyMatch() (0) | 2024.08.20 |
[JAVA] DateTimeFormatter (0) | 2024.06.22 |
[JAVA] StringBuilder.deleteCharAt() (0) | 2024.06.16 |
[JAVA] StringUtils.chop() (0) | 2024.06.15 |