머리말:
이 기사에서는 Application 시나리오의 비교뿐만 아니라 어레이를 Java 목록으로 변환하는 세 가지 상황의 장점과 단점의 비교 및 프로그래머가 종종 유형 변환 오류의 원인에 대한 분석을 소개합니다.
1. 가장 일반적인 방법 (반드시 최고는 아닙니다)
Arrays.asList(strArray) 을 추가하거나 목록을 추가하거나 삭제할 수 없습니다. 당신은 그것을 확인하고 수정할 수 있습니다. 그렇지 않으면 예외가 발생합니다.
키 코드 : List list = Arrays.asList(strArray);
private void testarraycastTolisterror () {string [] strarray = new String [2]; 목록 목록 = Arrays.asList (StrArray); // 변환 된 목록에 데이터를 삽입합니다 .add ( "1"); System.out.println (목록); }실행 결과 :
스레드의 예외 "main"java.lang.unsupportedoperationException의 예외
at java.util.abstractlist.add (actractlist.java:148)
at java.util.abstractlist.add (actractlist.java:108)
at com.darwin.junit.calculator.testarraycasttolist (calculator.java:19)
at com.darwin.junit.calculator.main (calculator.java:44)
프로그램은 list.add(“1”) 에서 예외를 던집니다. UnsupportedOperationException.
이유 분석 :
Arrays.asList(strArray) 의 반환 값은 개인 정적 내부 클래스 java.util.Arrays 클래스 java.util.Arrays.ArrayList 이며 java.util.ArrayList 클래스가 아닙니다. java.util.Arrays.ArrayList class는 set() , get() , contains() 및 기타 메소드를 포함하지만 add() 추가하거나 remove() 제거하는 방법이 없으므로 add() 호출하면 오류가 발생합니다.
사용 시나리오 : Arrays.asList(strArray) 메소드는 배열을 목록으로 변환 한 후에 만 사용할 수 있습니다. 값을 추가하거나 삭제할 필요가 없으며 읽을 데이터 소스로만 사용됩니다.
2. 배열이 목록으로 변환되면 추가, 삭제, 수정 및 검색 방법을 지원합니다.
ArrayList 생성자를 통해 Arrays.asList(strArray) 의 리턴 값을 java.util.Arrays.ArrayList 에서 java.util.ArrayList 로 변환하십시오.
키 코드 : ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
private void testarraycasttolistright () {string [] strarray = new String [2]; ArrayList <String> List = New ArrayList <string> (Arrays.AsList (StrArray)); list.add ( "1"); System.out.println (목록); }실행 결과 : 요소 "1"이 성공적으로 추가되었습니다.
[NULL, NULL, 1]
사용 시나리오 : 배열을 목록으로 변환 한 후 목록을 추가, 삭제, 수정 및 확인해야합니다. 목록의 데이터 양이 크지 않은 경우 사용할 수 있습니다.
3. 수집 도구 클래스 컬렉션을 통해 Addall () 메소드 (가장 효율적)
Collections.addAll(arrayList, strArray) 을 통해 변환하고 배열의 길이에 따라 동일한 길이 목록을 작성한 다음 Collections.addAll() 메소드를 통해 배열의 요소를 바이너리로 변환 한 다음 목록에 추가하십시오. 이것은 가장 효율적인 방법입니다.
키 코드 :
ArrayList <string> arrayList = New ArrayList <string> (Strarray.length); Collections.Addall (ArrayList, StrArray);
시험:
private void testArraycastTolistEfficient () {String [] strarray = new String [2]; ArrayList <string> arrayList = New ArrayList <string> (Strarray.length); Collections.addall (Arraylist, Strarray); ArrayList.add ( "1"); System.out.println (ArrayList); }실행 결과 : "1"요소도 성공적으로 추가되었습니다.
[NULL, NULL, 1]
사용 시나리오 : 배열을 목록으로 변환 한 후 목록을 추가, 삭제, 수정 및 확인해야합니다. 목록의 데이터 볼륨이 크면 사용하는 것이 선호되므로 작동 속도를 향상시킬 수 있습니다.
참고 : Collections.addAll() 메소드의 소스 코드를 첨부하십시오.
public static <t> 부울 addall (collection <? super t> c, t ... elements) {boolean result = false; for (t elements : elements) result | = c.add (요소); // result 및 c.add (요소) Bitwise 또는 작동을 한 다음 값을 결과 리턴 결과에 할당합니다. }요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.