그룹과 List 간 상호 변환 방법 상세 정보

5003 단어 수조List변환
1. List를 배열로 변환합니다.(여기 목록은 실체는 Array List) Array List를 호출하는 toArray 방법입니다.
toArray
public T[] toArray(T[]a)는 이 목록에 있는 모든 요소를 정확한 순서에 따라 포함하는 그룹을 되돌려줍니다.그룹의 실행을 되돌릴 때 형식은 지정한 그룹의 실행 형식입니다.만약 목록이 지정한 그룹을 넣을 수 있다면, 이 목록 요소를 넣은 그룹을 되돌려줍니다.그렇지 않으면 지정한 그룹이 실행될 때 형식과 목록의 크기에 따라 새 그룹이 할당됩니다.
지정한 그룹이 목록을 수용할 수 있고 남은 공간이 있다면, (즉 그룹의 요소가 목록보다 많음) 집합 끝에 있는 요소를null로 설정합니다.이것은 목록의 길이를 확인하는 데 매우 유용하지만, 호출자가 목록에null 요소가 포함되지 않은 것을 알았을 때만 유용합니다.
지정자:
인터페이스 컬렉션의 toArray
지정자:
인터페이스 목록의 toArray
덮어쓰기:
클래스 AbstractCollection의 toArray
매개변수:
a - 목록 요소의 수조를 저장해야 한다. 만약 그것이 충분하다면.그렇지 않으면 목록 요소를 저장하기 위해 분배된 같은 실행 시 형식의 새 그룹입니다.
반환:
목록 요소를 포함하는 그룹입니다.
던지기:
ArrayStoreException - a의 실행 시 형식이 이 목록에 있는 모든 요소의 실행 시 형식의 슈퍼 형식이 아니라면.구체적인 용법:

List list = new ArrayList();

list.add("1");

list.add("2");

final int size = list.size();

String[] arr = (String[])list.toArray(new String[size]);

2.수조를 List로 변환하여 Arrays를 호출하는 asList 방법입니다.
JDK 1.4 쌍java.util.Arrays.asList의 정의, 함수 매개변수는 Object[]입니다.따라서 1.4에서 asList()는 기본 형식의 그룹을 매개 변수로 지원하지 않습니다.
JDK 1.5 중,java.util.Arrays.asList의 정의, 함수 매개 변수는 Varargs로 범용으로 실현되었다.또한 autoboxing의 지원으로 대상 그룹과 기본 형식 그룹을 지원할 수 있습니다.
그러나 사용할 때 기본 데이터 형식의 그룹을 전송할 때 작은 문제가 발생하여 전송된 그룹 전체를 되돌아오는 목록의 첫 번째 요소로 간주합니다. 예를 들어:

public static void main(String[] args){
    int[] a1 = new int[]{1,2,3};
    String[] a2 = new String[]{"a","b","c"};

    System.out.println(Arrays.asList(a1));
    System.out.println(Arrays.asList(a2));
}
1.인쇄 결과는 다음과 같습니다

1
2 [[I@dc8569]
[a, b, c]
다음은 Arrays를 말씀드리겠습니다.asList()의 반환 값:
JDK 문서는 다음과 같이 말합니다:public static List asList (T...a) 는 지정한 그룹이 지원하는 고정된 크기의 목록을 되돌려줍니다.(반환 목록의 변경 사항은 그룹으로 직접 쓰기됩니다.)이 방법은 Collection과 같습니다.Array()와 함께 그룹 기반 API와collection 기반 API 간의 교량 역할을 합니다.되돌아오는 목록은 서열화되고 RandomAccess를 실현합니다.이 방법은 고정된 길이의 목록을 만드는 간편한 방법도 제공합니다

/**
 * @serial include
 */
 private static class ArrayList<E>extends AbstractList<E>implements RandomAccess, java.io.Serializable {
     private static final long serialVersionUID = -2764017481108945198L;
     private final E[] a;

     ArrayList(E[] array) {
         if (array == null)
         throw new NullPointerException();
         a = array;
     }

     public int size() {
        return a.length;
     }

     public Object[] toArray() {
        return a.clone();
     }

     public <T> T[] toArray(T[] a) {
         int size = size();
         if (a.length < size)
            return Arrays.copyOf(this.a, size, (Class<? extends T[]>) a.getClass());
         System.arraycopy(this.a,0, a, 0, size);
         if (a.length > size)
            a[size] = null;
         return a;
     }

     public E get(int index) {
        return a[index];
     }

     public E set(int index, E element) {
         E oldValue = a[index];
         a[index] = element;
         return oldValue;
     }

     public int indexOf(Object o) {
         if (o == null) {
             for (int i = 0; i < a.length; i++)
             if (a[i] == null)
             return i;
         }else {
             for (int i = 0; i < a.length; i++)
             if (o.equals(a[i]))
             return i;
         }
         return -1;
     }

     public boolean contains(Object o) {
        return indexOf(o) != -1;
     }
}
테이블은 여러 요소를 포함하는 것으로 초기화됩니다: List < String > stooges = Arrays.asList("Larry", "Moe", "Curly");우리는 모두 List의 전형적인 특성 중 하나가 길이가 변할 수 있다는 것을 알고 있다. 우리는 그것에 대해 요소를 삽입하고 삭제하는 작업을 편리하게 할 수 있다. 이것은 그것이 수조에 존재하는 것과 매우 큰 차이점이다. 후자의 길이는 고정되어 있고 우리는 수조에서 원소를 삭제할 수 없으며 원소의 값만 수정할 수 있다.Arrays를 이용합니다.asList (array) 는 목록을 되돌려줍니다. 그러나 이 목록은add와remove 동작을 지원하지 않습니다.
이게 무슨 이유죠?
Arrays.asList 소스:

1
2
3 public static <T> List<T> asList(T... a) {
   return new ArrayList<T>(a);
}
이곳의 Array List는java가 아닙니다.util.ArrayList 는 Arrays의 내부 클래스입니다.
우리는 이 내부 클래스가 AbstractList를 계승하는 것을 볼 수 있다. 다음은 AbstractList의add와remove 방법 원본이다

public boolean add(E e) {
    add(size(), e);
    return true;
}

public void add(int index, E element) {
    throw new UnsupportedOperationException();
}

public E remove(int index) {
    throw new UnsupportedOperationException();
}
그러니까, 우리가 Arrays에 대해.asList에서 반환한 List를 추가하거나 삭제하면 java에 보고합니다.lang. UnsupportedOperationException 예외입니다.

좋은 웹페이지 즐겨찾기