logo

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 +>' '>);> >}> }>

파이썬에서 s는 무엇입니까?

>

>

산출

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>