Array Vs List
List : 객체, 동적 배열, Integer 객체의 주소를 저장
Array : 객체, 정적 배열, 값을 직접 저장
✅ 정리
배열에 int를 쓸 수 있는 이유? | 배열은 제네릭이 아니라 JVM이 기본형을 직접 처리할 수 있음 |
리스트에 int를 못 쓰는 이유? | 제네릭은 객체 타입만 받기 때문에 Integer 같은 참조형만 가능함 |
불편하지 않나요? | 자바가 자동으로 int ↔ Integer 변환해줌 (Auto-boxing) |
“배열도 객체고, 배열에도 Integer를 넣을 수 있는데,
왜 실제 개발에서는 보통 int[]를 쓰지 Integer[]를 잘 안 쓸까?”
✅ 답변
배열에도 Integer[] 쓸 수 있는데 왜 잘 안 쓰나요? | int[]가 성능과 메모리에서 훨씬 유리하기 때문이에요. |
Integer[]는 언제 써요? | null 값 필요할 때, List와 같이 쓸 때, 또는 객체 메서드가 필요할 때만 써요. |
입력 받을땐 List가 훨씬 유연하고 편하다 vs 알고리즘은 int[] 처럼 배열기반이 효율적이다.
✅ 정리
- 입력 단계
→ List로 입력 개수 제약 없이 저장
→ 사용자 편의 - 처리 단계
→ List → int[] 로 변환
→ 알고리즘 효율 최적화
List->Array
1. inputList.stream()
- inputList는 List<Integer>입니다.
- stream() 메서드는 이 리스트를 Stream<Integer> 형태로 바꿔줍니다.
- 스트림(Stream)은 자바 8부터 도입된 함수형 데이터 처리 방식이에요.
✔️ Stream<Integer>는 아직 객체입니다. 기본형 int가 아님.
2. .mapToInt(i -> i)
- mapToInt()는 스트림의 각 요소를 int로 바꿔주는 메서드입니다.
- i -> i는 람다 표현식인데, 단순히 각 요소를 그대로 전달합니다.
- Integer를 int로 unboxing(객체 → 기본형)하는 역할을 합니다.
✔️ 결과는 IntStream (기본형 int 스트림)
3. .toArray()
- IntStream을 int[] 배열로 변환합니다.
- List<Integer> → Stream<Integer> → IntStream → int[] 라는 흐름이 완성됩니다.
'PS > JAVA' 카테고리의 다른 글
Map (1) | 2025.04.28 |
---|---|
입력 (0) | 2025.04.27 |
타입 추론 (0) | 2025.04.10 |
System.out.println() (0) | 2025.04.10 |
size() vs .length (0) | 2025.04.10 |