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])