반응형


오늘은 JAVA에서 배열을 리스트로 변환하는 방법을 알려드리겠습니다!
Arrays Class 이용하여 변환
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Integer arr[] = {1,2,3};
/*Arrays Class 사용*/
List<Integer> list1 = Arrays.asList(arr);
for(Integer integer : list1){
System.out.println(integer);
}
}
}
본 코드와 같이 Arrays.asList() 메소드를 이용하여 쉽게 배열을 리스트로 변경할 수 있습니다.
Arrays Class 이용하여 변환 후 데이터 변경(?)
package project;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
Integer arr[] = {1,2,3};
/*Arrays Class 사용*/
List<Integer> list1 = Arrays.asList(arr);
System.out.println("***변경전***");
for(Integer integer : list1){
System.out.println(integer);
}
list1.add(4); //인자를 추가하는 경우
System.out.println("***변경후***");
for(Integer integer : list1){
System.out.println(integer);
}
}
}

하지만 Arrays.asList() 함수는 고정된 길이(fixed-length) 리스트를 리턴하기 때문에 List를 늘리는게 불가능합니다.
또한, 원배열 arr을 수정하면 참조하는 list1 리스트도 같이 수정됩니다.(반대도 성립,, 독립적이지 않음)
그러면 원배열에 영향을 받지 않고 리스트를 수정하는 방법은 무엇일까?

답은 새롭게 리스트 객체를 만들어주면 됩니다!
new ArrayList<>(Arrays.asList())
package project;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
Integer arr[] = {1,2,3};
/*Arrays Class 사용*/
List<Integer> list1 = new ArrayList<>(Arrays.asList(arr));
System.out.println("***변경전***");
for(Integer integer : list1){
System.out.println(integer);
}
list1.add(4); //인자를 추가하는 경우
System.out.println("***변경후***");
for(Integer integer : list1){
System.out.println(integer);
}
}
}

출력 결과처럼 ArrayList로 새롭게 객체를 생성하면, 원 배열과 리스트간에 동기화는 없어지고 독립적으로 수정이 가능해집니다!
Collectors.toList()
package project;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Integer arr[] = {1,2,3};
/*Stream 사용*/
List<Integer> list1 = Stream.of(arr).collect(Collectors.toList());
System.out.println("***변경전***");
for(Integer integer : list1){
System.out.println(integer);
}
list1.add(4); //인자를 추가하는 경우
System.out.println("***변경후***");
for(Integer integer : list1){
System.out.println(integer);
}
}
}

Java8 버전 부터는 Stream을 이용하여 배열을 리스트로 변환 가능합니다! 스트림을 자주 사용하지는 않지만.. 몇가지 기억나는 것중에 하나예요 ㅎ
다음 포스팅에서는 List를 배열로 변환하는 법을 정리해보겠습니다!
감사합니다.
반응형
'💻 IT > 📌 Java' 카테고리의 다른 글
[Java] Stack 이란 ? 스택(Stack) 사용법 (4) | 2022.04.01 |
---|---|
[Java] List to Array :: 자바 리스트를 배열로 변환하기 (3) | 2022.03.31 |
[JAVA] char to int, int to char :: char를 int로 변환하기, int를 char로 변환하기 (8) | 2022.03.22 |
[JAVA] JVM, JRE, JDK 차이점 :: 용어는 비슷하지만 용도는 다르다! (2) | 2022.03.20 |
(JAVA) String에서 Json OR Json에서 String 변환 (0) | 2021.09.24 |