Java에서 ArrayList를 배열로 변환: toArray() 메서드

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 


마음에 드실지도 몰라요