[Java] 타입 변환 (Array ↔ Array/List/String)
2025. 10. 14. 19:13ㆍDev./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 |