CodeGym/Java Blog/무작위의/Java의 Arrays.asList() 메서드
John Squirrels
레벨 41
San Francisco

Java의 Arrays.asList() 메서드

무작위의 그룹에 게시되었습니다
회원
많은 초보자들이 Arrays.asList() 메서드의 개념을 데이터 구조 ArrayList와 혼동합니다. 비슷하게 보이고 들릴 수 있지만 이 둘은 구현에 있어 완전히 다릅니다. 이 게시물에서는 Arrays.asList() 메서드 의 기본 사용법을 다루고 이와 관련된 몇 가지 일반적인 혼란을 해결할 것입니다.

Arrays.asList()가 사용되는 이유는 무엇입니까?

목록으로 변환해야 하는 배열이 있는 경우 java.util.Arrays는 이 목적을 위해 래퍼 Arrays.asList()를 제공합니다. 간단히 말해서 이 메서드는 배열을 매개 변수로 사용하고 목록을 반환합니다. 컬렉션 프레임워크가 도입되기 전에 Java 플랫폼 API의 주요 부분이 개발되었습니다. 따라서 때때로 전통적인 배열과 보다 현대적인 컬렉션 간에 변환해야 할 수도 있습니다. 이 기능은 컬렉션과 배열 기반 API 사이의 링크 역할을 합니다.Java의 Arrays.asList() 메서드 - 1

다음 예를 살펴보십시오.
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class ArraysAsListDemo {
    public static void main(String[] args) {

	String[] teamMembers = {"Amanda", "Loren", "Keith"};
      // using aslist() method
	List teamList = Arrays.asList(teamMembers);
	System.out.println("List : " + teamList);

	HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
	System.out.println("HashSet : " + teamHashSet);
    }
}
산출:
List : [Amanda, Loren, Keith] HashSet : [Keith, Loren, Amanda] // HashSet은 순서를 유지하지 않습니다.

Arrays.asList()와 ArrayList는 어떻게 다릅니까?

배열에서 Arrays.asList() 메서드를 호출하면 반환된 객체는 ArrayList ( List 인터페이스의 크기 조정 가능한 배열 구현 ) 아닙니다 . 기본 배열에 액세스하는 get()set() 메서드가 있는 보기 개체입니다 . 연결된 반복자의 add() 또는 remove()와 같이 배열의 크기를 변경하는 모든 메서드는 UnsupportedOperationException 을 발생시킵니다 . Java 프로그램이 성공적으로 컴파일되지만 Runtime Exception이 발생하는 이유는 분명히 "List"가 다음의 결과로 반환되기 때문입니다.Arrays.asList() . 모든 추가/삭제 작업이 허용되는 경우. 그러나 기본 데이터 구조는 크기 조정이 불가능한 "배열" 이므로 런타임에 예외가 발생합니다. 다음은 어떻게 보이는지 보여주는 스니펫입니다.
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
   public static void main(String[] args) {
	Integer[] diceRoll = new Integer[6];
      //using aslist() method
	List diceRollList = Arrays.asList(diceRoll);
	System.out.println(diceRollList);

	// using getters and setters to randomly access the list
	diceRollList.set(5, 6);
	diceRollList.set(0, 1);
	System.out.println(diceRollList.get(5));
	System.out.println(diceRollList.get(1));

	System.out.println(diceRollList);

	diceRollList.add(7); // Add a new Integer to the list
    }
}
산출:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] "main" 스레드의 예외 java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList. java:148)에서 java.util.AbstractList.add(AbstractList.java:108)에서 ArraysAsListDemo.main(ArraysAsListDemo.java:20)

asList() 메서드 사용 예

Java SE 5.0부터 asList() 메서드는 가변 개수의 인수를 갖도록 선언되었습니다. 배열을 전달하는 대신 개별 요소를 전달할 수도 있습니다. 예를 들어:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
    public static void main(String[] args) {
	List seasons = Arrays.asList("winter", "summer", "spring", "fall");
	List odds = Arrays.asList(1, 3, 5, 7, 9);

	System.out.println(seasons);
	System.out.println(odds);
    }
}
산출:
[겨울, 여름, 봄, 가을] [1, 3, 5, 7, 9]

결론

Arrays.asList()를 사용하려면 자신의 유틸리티에 대한 래퍼 메서드일 뿐이라는 점을 명심해야 합니다. ArrayList와 혼동하지 말고 "목록"을 반환한다는 점을 명심하십시오. 처음에는 추가/제거 기능을 수행하는 데 오류가 발생할 수 있지만 일관된 연습과 이해로 모두 사라집니다. 따라서 IDE를 실행하고 훌륭한 학습 경험을 하십시오!
코멘트
  • 인기
  • 신규
  • 이전
코멘트를 남기려면 로그인 해야 합니다
이 페이지에는 아직 코멘트가 없습니다