[Java] 타입 변환 (Array ↔ Array/List/String)

2025. 10. 14. 19:13Dev./Java

728x90
반응형

int[ ] <-> Integer [ ]

int[ ] -> Integer [ ]

int[] arr = {1, 2, 3};
Integer[] objArr = Arrays.stream(arr)   
                          .boxed()     
                          .toArray(Integer[]::new);
  • Arrays.stream(intArr) → IntStream 생성
  • .boxed()int → Integer 변환 (int 값을 Integer 객체로 감싸서 객체 배열 생성)
  • .toArray(Integer[]::new) → 최종 Integer[] 배열 생성

Integer [ ]-> int[ ] 

Integer[] wrapperArr = {1, 2, 3};

// Stream + mapToInt 사용
int[] intArr = Arrays.stream(wrapperArr)
                     .mapToInt(Integer::intValue)
                     .toArray();
  • Arrays.stream(wrapperArr) → Stream<Integer> 생성
  • .mapToInt(Integer::intValue)Integer → int 변환 (Unboxing)
  • .toArray() → int[] 배열 생성

int [ ] <-> String [ ]

방향 코드  설명
int[] → String[] Arrays.stream(nums).mapToObj(String::valueOf).toArray(String[]::new) 숫자 → 문자열
String[] → int[] Arrays.stream(strArr).mapToInt(Integer::parseInt).toArray() 문자열 → 숫자
double[] → String[] Arrays.stream(dArr).mapToObj(String::valueOf).toArray(String[]::new) 실수 → 문자열
String[] → double[] Arrays.stream(strArr).mapToDouble(Double::parseDouble).toArray() 문자열 → 실수

int [ ]  -> String [ ]

// for문 사용
int[] nums = {1, 2, 3};
String[] strArr = new String[nums.length];

for (int i = 0; i < nums.length; i++) {
    strArr[i] = String.valueOf(nums[i]);
}
  • 가장 명확하게 변환하는 방법
  • String.valueOf()
    → 어떤 타입이든 안전하게 String으로 변환해줌 (null도 “null”로 처리)
// Stream (Java 8이상)
int[] nums = {1, 2, 3};
String[] strArr = Arrays.stream(nums)
                        .mapToObj(String::valueOf)
                        .toArray(String[]::new);
  • mapToObj() : 기본형 스트림을 객체 스트림(String)으로 바꿔줌
  • toArray(String[ ]::new) : 새로운 String 배열로 반환

String [ ] -> int [ ]

//for문 사용
String[] strArr = {"10", "20", "30"};
int[] nums = new int[strArr.length];

for (int i = 0; i < strArr.length; i++) {
    nums[i] = Integer.parseInt(strArr[i]);
}
  • Integer.parseInt() : 문자열을 int로 변환
//Stream
String[] strArr = {"10", "20", "30"};
int[] nums = Arrays.stream(strArr)
                   .mapToInt(Integer::parseInt)
                   .toArray();

Char [ ] <-> String

//char [] -> String
char[] chars = {'H','i'};
String s = new String(chars); // "Hi"

//String -> char []
String s = "Hi";
char[] chars = s.toCharArray();

배열 <-> ArrayList

  배열 (array) ArrayList
타입 고정 크기 자료구조 동적 크기 자료구조
선언 int[] arr = new int[3]; ArrayList<Integer> list = new ArrayList<>();
크기 변경 불가능 (고정 크기) 가능 (add(), remove() 등)
데이터 타입 기본형 가능 (int, double 등) 객체형만 가능 (예: Integer, Double)
접근 속도 빠름 (O(1)) 빠름 (O(1))
삽입/삭제 느림 (새 배열 복사) 빠름 (add, remove 지원)
null 허용 가능 가능
사용 예 단순, 고정 크기 데이터 저장 자주 변경되는 데이터 관리, 동적 구조

배열 -> ArrayList

//기본 배열 -> ArrayList
int[] arr = {1, 2, 3};

ArrayList<Integer> list = Arrays.stream(arr)
                                .boxed() 
                                .collect(Collectors.toCollection(ArrayList::new));

//객체 배열 -> ArrayList
String[] arr = {"A", "B", "C"};
ArrayList<String> list = new ArrayList<>(Arrays.asList(arr));
  • Arrays.asList()는 고정된 크기의 List (add/remove 불가)
    → 수정 가능한 리스트로 사용하고 싶다면 new ArrayList<>(Arrays.asList(arr)) 로 변환해야한다.

 

ArrayList -> 배열

//기본형
ArrayList<Integer> list = new ArrayList<>(List.of(1, 2, 3));

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

 

  • 기본형 배열로 바꾸려면 stream().mapToInt() 사용해 언박싱 후 타입 변환

 

//문자열
ArrayList<String> list = new ArrayList<>(List.of("A", "B", "C"));

String[] arr = list.toArray(new String[0]);
  • list.toArray(new String[0]) 은 자주 쓰이는 안전한 패턴

요약

array ↔ ArrayList
 ├── array → ArrayList
 │     ├─ 기본형: stream().boxed().collect()
 │     └─ 객체형: new ArrayList<>(Arrays.asList())
 │
 └── ArrayList → array
       ├─ 기본형: stream().mapToInt().toArray()
       └─ 객체형: toArray(new T[0])
728x90
반응형

'Dev. > Java' 카테고리의 다른 글

[Java] 캡슐화  (0) 2025.10.16
[Java] 인터페이스와 다형성  (0) 2025.10.15
[Java] Java 메서드(Method) 와 객체화  (0) 2025.10.14
[Java] HashSet  (0) 2025.10.10
[Java] .equals()와 ==의 차이  (0) 2025.10.03