티스토리 뷰

1. Array 에서 ArrayList 변환

1.1. Stream 이용

String[] arr  = new String [] {"1", "A", "a", "b"};
List<String> list = Arrays.stream(arr).collect(Collectors.toList());
System.out.println(list.getClass().getName());

결과화면 :

 

1.2. Lists 클래스 이용

String[] arr  = new String [] {"1", "A", "a", "b"};
List<String> list = Arrays.asList(arr);
list.forEach(System.out::println);

 

결과화면 :

 

 

2. ArrayList 에서 Array 변환

2.1. toArray() 이용

String[] arr  = new String [] {"1", "A", "a", "b"};
List<String> list = Arrays.asList(arr);

String[] array = list.toArray(new String[0]);
for(String s : array) {
    System.out.println(s);
}

결과화면 :

 

 

toArray() 매서드만 보고 파라미터 없이 바로 사용하게 되면 Object[]를 반환하기 때문에, 형변환과정을 다시 거쳐하는 불편함이 있다. toArray의 파라미터로 크기 0짜리 어레이를 초기화해주면 나머지 길이는 알아서 매핑된다.

 

2.2. stream() 이용

String[] arr  = new String [] {"1", "A", "a", "b"};
List<String> list = Arrays.asList(arr);

String[] array = list.stream().toArray(String[]::new);
for(String s : array) {
    System.out.println(s);
}

 

결과화면 :

 

 

stream() 내부의 toArray() 를 활용하기 위해선 파라미터로 String[]::new가 들어가야한다. new String[0] 을 넣으면 에러 메시지를 출력한다. list에서 바로 변환할 때도 new String[0] 대신에 String[]::new 을 넣어도 동작한다.

 

String[]::new 이걸 파라미터로 받을 수 있는게 자바 11부터라는 말이 있긴한데 정확한 정보인지는 모르겠다.

 

추가 1. List의 타입이 Integer 일때

Integer[] arr  = new Integer [] {1,2,3,4,5};
List<Integer> list = Arrays.asList(arr);

int[] array = list.stream()
                  .mapToInt(Integer::intValue)
                  .toArray();

for(Integer s : array) {
    System.out.println(s);
}

mapToInt로 list의 값들을 int 형식으로 매핑시켜 int[] 형식으로 반환할 수도 있다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함