자바 의 Arrays. asList 사용법
2749 단어 Java
도구 류 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 할 수 없 기 때 문 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.