728x90
반응형
더보기
노션 에서 작성하였으므로 더 보기 편하실 수 있습니다.
https://www.notion.so/JAVA-Day-3-24574fb5c2e880db9038eb36a283b09a?source=copy_link
[Day] 08.04
[Chapter] ~ 38강
⚙️ 기본형 변수타입에 대응되는 래퍼타입(Wrapper Class)
✚ 래퍼 타입이란?
- 기본 자료형은 값 자체를 저장하는 반면, 래퍼 타입은 해당 값과 관련된 메서드를 포함하는 객체 형태로 제공
- 프로그래밍 언어에서 기본 자료형(primitive type)을 객체 형태로 다루기 위해 사용되는 클래스
ex) int형을 객체로 다루기 위해 Integer 클래스 사용
| 기본형 | 래퍼 타입 |
| boolean | Boolean |
| char | Character |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
➡️ 래퍼 타입은 제네릭에서 많이 사용됨
제네릭 ( 꺽쇠 <>)
클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법
⚙️ 배열
동일한 데이터 타입의 요소들이 메모리에 연속적으로 저장되는 자료구조
WiseSaying[] wiseSayings = new WiseSaying[100];
장점
- 구현이 쉬움
- 검색 성능 좋음 ➡️ index 활용
- 참조 위한 추가적 메모리 할당 필요 ❌
단점
- 삽입 / 삭제 비효율적 ➡️ 삽입 / 삭제 시 모든 요소를 이동시켜야 함 ➡️ 즉, 크기가 클수록 성능 떨어짐
- 크기 불변 ➡️ 너무 크면 메모리 낭비 / 너무 작으면 그 이상의 저장 못함
- 메모리 재사용 불가
- 제네릭 불가
⚙️ ArrayList<>
자바에서 제공하는 가변 크기 배열(동적 배열) 즉, 배열의 단점 보완
import java.util.ArrayList;
List<Integer> al = new ArrayList<>();
al.add(10); // 0
al.add(20); // 1
al.add(30); // 2
System.out.println(al.get(0) + al.get(1) + al.get(2));
System.out.println(al.size()); // 길이 : 3
al.add(40); // 3
System.out.println(al.size()); // 길이 : 4
장점
- 크기 가변 ➡️ 필요 시 자동으로 늘어남
- 삽입 / 삭제 간단 ➡️ add(), remove()
- 자동으로 내부 배열을 재배열 ⭕️
- 제네릭 가능 ex) ArrayList<Integer>
- 메서드 API 풍부 ➡️ contains, indexOf
단점
- 중간 삽입 / 삭제 느림
- 기본 자료형 사용 불편 ➡️ int, char 타입 사용 ❌ ➡️ Integer, Character로 래핑 ⭕️
📍 즉, 리스트 제네릭에는 참조타입만 ⭕️
⚙️ Map<>
프로그래밍에서 키(Key)와 값(Value)을 연결하여 데이터를 저장하는 자료구조
import java.util.Map;
import java.util.HashMap;
System.out.println("== 맵 ==");
// 데이터를 넣은 순서를 기억하고 싶다면 LinkedHashMap을 사용하면 된다.
Map<String, Integer> agesMap = new HashMap<>();
// 맵은 데이터 넣을 때 불편하다.
agesMap.put("철수", 10); // 철수:10
agesMap.put("영수", 20); // 영수:20
agesMap.put("미애", 30); // 미애:30
// 맵은 데이터 꺼낼 때 편하다.
System.out.println(agesMap.get("철수"));
System.out.println(agesMap.get("영수"));
System.out.println(agesMap.get("미애"));
System.out.println("== 맵 순회 ==");
for (String key : agesMap.keySet()) {
System.out.println(key + ":" + agesMap.get(key));
장점
- 접근 쉬움 ➡️ key로 바로 꺼낼 수 있음
- 검색 빠름 ➡️ 내부적으로 해시 기반이라 빠른 조회 ⭕️
- key에 의미부여 가능 ➡️ <key, value> 구조
단점
- key 중복 불가
- key 없이 접근 불가
- 구조가 복잡할 수 있음
⚙️ List 🆚 Map
리스트는 넣을 때 편하고, 맵은 꺼낼 때 편하다
| 항목 | List 단점 | Map 단점 |
| 데이터 꺼내기 | 인덱스를 알아야 함 → ❌ 불편 | 키를 알아야 함 → ❌ 키 중복 불가 |
| 삭제/변경 | 인덱스 조작 필요 | 키를 잊으면 접근 불가 |
| 의미 부여 | 단순한 순서만 가짐 | 구조가 복잡할 수 있음 |
✅ 리스트는 "많이 넣고 순서대로 처리"할 때 유리
✅ 맵은 "특정 키로 빠르게 찾고 싶을 때" 유리
728x90
반응형
'✏️공부 > 💡JAVA' 카테고리의 다른 글
| [JAVA] JAVA 기초 | 상속(extends), 추상 클래스 (abstract), Getter / Setter (4) | 2025.08.06 |
|---|---|
| [JAVA] JAVA 기초 | static, 상속 (extends) | 예제 문제 ⭕️ (4) | 2025.08.05 |
| [JAVA] JAVA 기초 | 클래스, 함수, 전역변수 vs 인스턴스 변수 (0) | 2025.08.01 |
| [JAVA] JAVA 기초 | 원시타입 vs 참조타입, 반복문, 조건문 등 (4) | 2025.08.01 |
| [JAVA] 백트래킹(Backtracking) | 개념, 동작 흐름, 예시 ⭕️ (3) | 2025.07.10 |
