List 컨테이너의 인스턴스를 배열로 만드는 메서드
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
String [] arr = list.toArray(new String[0]);
즉, 위의 코드 예제에서는 파라미터로 넘어가는 객체의 사이즈가 list의 사이즈보다 작기때문에
list의 사이즈에 맞춰서 배열이 생성된다. (배열 크기는 3으로 생성)
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 파러 가보자