Java에서 ArrayList를 배열로 변환: toArray() 메서드
ArrayList를 Array로 변환하는 데 다음 방법을 사용할 수 있습니다.
방법 1: Object[] toArray() 메서드 사용
통사론:
public Object[] toArray()
- 인터페이스 Collection 및 인터페이스 List의 toArray에 의해 지정됩니다.
- AbstractCollection 클래스의 toArray를 재정의합니다.
- 이 목록의 모든 요소를 올바른 순서로 포함하는 배열을 반환합니다.
자바
// Java program to demonstrate working of> // Objectp[] toArray()> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> > public> static> void> main(String[] args)> > {> > List al => new> ArrayList();> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 40> );> > Object[] objects = al.toArray();> > // Printing array of objects> > for> (Object obj : objects)> > System.out.print(obj +> ' '> );> > }> }> |
산출
10 20 30 40
참고: toArray() 메서드는 Object(Object[]) 유형의 배열을 반환합니다. Integer 객체로 사용하기 전에 이를 Integer로 타입캐스트해야 합니다. 타입캐스트하지 않으면 컴파일 오류가 발생합니다.
다음 예를 고려하십시오.
자바
// A Java program to demonstrate that assigning Objects[]> // to Integer[] causes error.> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> > public> static> void> main(String[] args)> > {> > List al => new> ArrayList();> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 40> );> > // Error: incompatible types: Object[]> > // cannot be converted to Integer[]> > Integer[] objects = al.toArray();> > for> (Integer obj : objects)> > System.out.println(obj);> > }> }> |
산출:
19: error: incompatible types: Object[] cannot be converted to Integer[] Integer[] objects = al.toArray(); ^ 1 error
따라서 List의 요소를 저장해야 하는 배열을 만들고 요소가 충분히 큰 경우 toArray() 메서드에 인수로 전달하여 요소를 저장하는 것이 좋습니다. 그렇지 않으면 이 목적을 위해 동일한 유형의 새 배열이 할당됩니다.
방법 2: T[] toArray(T[] a) 사용
// Converts a list into an array arr[] and returns same. // If arr[] is not big enough, then a new array of same // type is allocated for this purpose. // T represents generic . public T[] toArray(T[] arr)
배열 매개변수와 배열 반환 값이 있다는 점에 유의하세요. 전달된 배열의 주요 목적은 배열 유형을 알려주는 것입니다. 반환된 배열은 전달된 배열과 동일한 유형입니다.
- 전달된 배열에 충분한 공간이 있으면 요소는 이 배열 자체에 저장됩니다.
- 전달된 배열의 공간이 충분하지 않으면 주어진 목록과 동일한 유형과 크기로 새 배열이 생성됩니다.
- 전달된 배열에 더 많은 공간이 있는 경우 배열은 먼저 목록 요소로 채워진 다음 null 값이 채워집니다.
a의 런타임 유형이 이 목록에 있는 모든 요소의 런타임 유형의 상위 유형이 아닌 경우 ArrayStoreException이 발생합니다.
자바
// A Java program to convert an ArrayList to arr[]> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> > public> static> void> main(String[] args)> > {> > List al => new> ArrayList();> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 40> );> > Integer[] arr => new> Integer[al.size()];> > arr = al.toArray(arr);> > for> (Integer x : arr)> > System.out.print(x +> ' '> );> > }> }> |
산출
10 20 30 40
참고: 지정된 배열이 null이면 NullpointerException이 발생합니다. 예를 들어 이것을 참조하십시오.
방법 3: get() 메서드를 사용하여 ArrayList를 변환하는 수동 방법
내장된 toArray() 메소드에서 java를 사용하고 싶지 않다면 이 메소드를 사용할 수 있습니다. 이는 모든 ArrayList 요소를 String Array[]에 복사하는 수동 방법입니다.
// Returns the element at the specified index in the list. public E get(int index)
자바
// Java program to convert a ArrayList to an array> // using get() in a loop.> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> > public> static> void> main(String[] args)> > {> > List al => new> ArrayList();> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 40> );> > Integer[] arr => new> Integer[al.size()];> > // ArrayList to Array Conversion> > for> (> int> i => 0> ; i arr[i] = al.get(i); for (Integer x : arr) System.out.print(x + ' '); } }> |
산출
10 20 30 40
방법 4: Java 8에서 컬렉션의 스트림 API를 사용하여 기본 int 유형의 배열로 변환
List의 streams() 메소드와 mapToInt()를 사용하여 ArrayList를 기본 데이터 유형 int의 배열로 변환할 수 있습니다.
int[] arr = list.stream().mapToInt(i ->i).toArray();
자바
// Java program to convert a ArrayList to an array> // using streams()> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> > public> static> void> main(String[] args)> > {> > List al => new> ArrayList();> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 40> );> > // ArrayList to Array Conversion> > int> [] arr = al.stream().mapToInt(i ->i).toArray();> > for> (> int> x : arr)> > System.out.print(x +> ' '> );> > }> }> |
산출
10 20 30 40