그룹과 List 간 상호 변환 방법 상세 정보
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
/**
* @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 예외입니다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 범용 요약(二): 범용과 수조수조는 원소의 실제 유형을 추적할 수 있으며, 이 유형은 수조가 생성될 때 만들어진 것이다.위에서 설명한 코드 한 줄: gia = (Generic<Integer>[])new Object[SIZE], 그룹을 만들 때 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.