자바 의 Arrays. asList 사용법

2749 단어 Java
본문https://www.cnblogs.com/hoobey/p/6661294.html
    도구 류 Arrays. asList () 를 사용 하여 배열 을 집합 으로 변환 할 때 집합 과 관련 된 방법 을 수정 할 수 없습니다. add / remove / clear 방법 은 UnsupportOperation Exception 이상 을 던 집 니 다.설명: asList 의 반환 대상 은 Arrays 내부 클래스 로 집합 을 위 한 수정 방법 이 없습니다.Arrays. asList 는 어댑터 모드 를 나타 내 는데 인터페이스 만 바 꾸 고 배경 데 이 터 는 배열 입 니 다.
String[] str = new String[]{"1","2"};
List list = Arrays.asList(str);
     :list.add("x");//     
     :str[0] = "unv";//  list.get(0)     。

      배열 (예 를 들 어 정렬 과 검색) 을 조작 하 는 여러 가지 방법 을 포함한다.배열 을 목록 으로 볼 수 있 는 정적 공장 도 포함 되 어 있다.특별히 밝 히 지 않 으 면 배열 이 null 로 인용 되 는 것 을 지정 하면 이러한 방법 은 모두 NullPointer Exception 을 던 집 니 다.재 미 있 는 코드 는 다음 과 같다.
public static void main(String[] args) {
int[] data = {1,2,3,4,5};
List list = Arrays.asList(data);
System.out.println("         :" + list.size());
}

이 출력 수량 은 1 입 니 다. 원인: Arrays. asList 에서 이 방법 은 길 어 지 는 매개 변 수 를 받 아들 입 니 다. 일반적으로 배열 매개 변수 로 볼 수 있 지만 int [] 자체 가 하나의 유형 이기 때문에 data 변 수 를 매개 변수 로 전달 할 때 컴 파일 러 는 하나의 변수 만 전 달 된 것 이 라 고 생각 합 니 다. 이 변수의 유형 은 int 배열 이기 때문에 size 는 1 입 니 다.기본 유형 은 범 형의 매개 변수 로 할 수 없고 이치 에 따라 포장 유형 을 사용 해 야 한다. 그러나 여기 에는 오류 가 없 었 다. 배열 이 범 형 화 될 수 있 기 때문에 변환 한 후에 list 에 int 라 는 배열 이 있 었 다.
int[] data = {1,2,3,4,5};
List list = Arrays.asList(data);
System.out.println("    :" + list.get(0).getClass());
System.out.println("      :"+data.equals(list.get(0)));

볼 수 있다.
요소 형식 으로 출력: class [I      
앞 뒤 가 같 을 지 여부: true
JVM 은 array 형식 을 출력 할 수 없 기 때문에 array 형식 은 java. lang. reflect 패키지 에 속 합 니 다. 배열 에 반사 적 으로 접근 하 는 클래스 를 통 해 컴 파일 할 때 생 성 됩 니 다. 따라서 다음 으로 변경 해 야 합 니 다.
Integer[] data = {1,2,3,4,5};
List list = Arrays.asList(data);
System.out.println("         :" + list.size());

출력 결과: 목록 에 있 는 요소 의 수 는: 5 입 니 다. 컴 파일 러 가 Integer [] 에 대한 처리 가 다르다 는 것 을 설명 합 니 다. Integer 는 가 변 적 인 긴 매개 변수 입 니 다. 전송 과정 에서 asList () 방법 은 실제 Integer 배열 의 요 소 를 저장 하 는 것 입 니 다. 또한 다음 코드 가 있다 면:
//  ,      
enum Week{Sun,Mon, Tue, Wed,Thu,Fri,Sat}
public static void main(String[] args) {
//   
Week[] workDays = {Week.Mon, Week.Tue, Week.Wed,Week.Thu,Week.Fri};
//     
List list = Arrays.asList(workDays);
//         
list.add(Week.Sat);

여기 서 add 를 사용 하면 오류 가 발생 할 수 있 습 니 다. Arrays. asList 에서 코드 를 보면 여기 서 돌아 오 는 ArrayList 는 원래 의 전통 적 인 의미 에서 자바 util. arraylist 가 아니 라 자신의 도구 류 의 정적 인 개인 내부 류 입 니 다. add 방법 을 제공 하지 않 고 스스로 나타 나 야 하기 때문에 오류 가 발생 했 습 니 다. 따라서 array. aslist 이후 길이 가 증가 하지 않 을 것 이 라 고 확신 하지 않 는 한, 그렇지 않 습 니 다.리스트 abc = Arrays. asList ("a", "b", "c") 를 신중하게 사용 합 니 다. 이 길 이 는 더 이상 add 할 수 없 기 때 문 입 니 다.

좋은 웹페이지 즐겨찾기