toArray 사용하기

큰모래·2022년 12월 4일
1

정의

List 컨테이너의 인스턴스를 배열로 만드는 메서드

사용법

List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");

String [] arr = list.toArray(new String[0]);
  • list를 toArray 메서드에 파라미터로 넘어가는 배열 객체의 size만큼을 배열로 전환한다.
  • 단, 해당 list size가 파라미터로 넘어가는 배열 객체의 size보다 클때, 해당 list의 size로 배열이 만들어진다.
  • 반대로 해당 List size가 인자로 넘어가는 배열객체의 size보다 작을때는, 인자로 넘어가는 배열객체의 size로 배열이 만들어진다.

즉, 위의 코드 예제에서는 파라미터로 넘어가는 객체의 사이즈가 list의 사이즈보다 작기때문에
list의 사이즈에 맞춰서 배열이 생성된다. (배열 크기는 3으로 생성)

int형으로 배열 만들기

int 타입은 원시타입이기때문에 toArray()를 사용할 수 없다.
그렇다면 int 타입으로 배열을 만들고 싶을때는??

List<Integer> list = new ArrayList<>();
list.add(1);    
list.add(2);
list.add(3);

//첫번째 방법
int [] arr = new int[list.size()];
for(int i = 0; i<list.size(); i++) {
	arr[i] = list.get(i).intValue();
}

//두번째 방법
int [] arr2 = list.stream()
			  .mapToInt(Integer::intValue)
              .toArray();

첫번째 방법은 반복문을 통해 각 요소 하나하나 int형으로 변환해 배열에 값을 넣는다.
여기서, intValue()는 Integer 객체에서 int형 값으로 전환하는 메서드이다.

두번째 방법은 stream으로 변환 후 map을 이용해 Integer를 int형으로 전환한다.
그 값을 toArray()를 통해 배열값으로 넣어준다.

정리

toArray()는 List의 인스턴스를 배열로 바꾸는 메서드
String [] 배열명 = 리스트명.toArray(new String[크기]); 식으로 사용한다.

list를 int형 배열로 전환하고 싶을때는 for문안에 intValue() 메서드를 사용해 일일이 값을 변환하거나 stream을 사용해 int 배열을 만들 수 도 있다.

stream에 대한 지식이 많이 부족한 것을 느꼈다. stream 파러 가보자

profile
큰모래

0개의 댓글