Til 16.

Sol Karsian·2025년 3월 4일
post-thumbnail

🧠 TIL - Java 16일차: Map, Properties, Iterator, 장난감 공장 실습 설계
오늘은 자바 컬렉션 중 Map 계열의 주요 구현체들과, 설정 정보를 저장하는 Properties, 컬렉션을 순회하는 Iterator, 그리고 실전 예제로 장난감 공장 객체 설계를 학습했습니다.

📚 Map 컬렉션
✅ 구조 및 특징
Key - Value 쌍으로 구성된 자료구조

Key: 중복 불가(Set과 유사)

Value: 중복 가능(List와 유사)

동일한 Key에 값을 넣으면 기존 값이 덮어쓰기됨

🔑 주요 메서드
put(key, value) : 값 저장

get(key) : 값 조회

remove(key) : 값 삭제

containsKey(key) : 키 존재 여부 확인

🌳 주요 Map 구현 클래스

클래스명 특징
HashMap 가장 일반적인 Map. 순서 보장 X. 빠른 접근 성능
Hashtable 동기화 지원(스레드 안전). 느림
LinkedHashMap 입력 순서를 유지
TreeMap Key를 정렬된 상태로 저장
Properties Key, Value 모두 String. 설정 파일에 사용 (.properties 파일)
🗂️ Properties
.properties 파일과 연동해 설정 정보를 저장/관리하는 데 사용

Key와 Value는 항상 문자열(String)

구조: 키=값 형태로 저장

사용 예: DB 설정, 언어팩, 외부 설정 등

한글은 유니코드로 저장됨

🔁 Map 순회 방법
1. keySet() 이용
java
복사
편집
Set keys = map.keySet();
for (K key : keys) {
System.out.println(key + " : " + map.get(key));
}
2. entrySet() 이용 (Key + Value 한 쌍으로 접근)
java
복사
편집
for (Map.Entry<K, V> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
🧵 Iterator
컬렉션을 일관성 있게 순회하기 위한 인터페이스

✨ 주요 메서드

메서드 설명
hasNext() 다음 요소가 있는지 확인
next() 다음 요소 반환
remove() 현재 요소 삭제 (반복 중 안전하게 삭제 가능)
⚠️ 주의
일반 for-each문은 remove()를 쓸 수 없음

삭제가 필요한 경우에는 반드시 Iterator 사용!

✅ Iterator 예시
java
복사
편집
Iterator it = list.iterator();
while (it.hasNext()) {
String item = it.next();
if (item.equals("banana")) it.remove();
}
🧸 실습: 장난감 공장 예제 설계
📦 com.toyFactory.model.dto.Toy
java
복사
편집
필드:

  • 이름 (String)
  • 사용 가능 연령 (int)
  • 가격 (int)
  • 색상 (String)
  • 제조일 (String, YYYYMMDD)
  • 재료 (Set) → 중복 없는 재료 저장
    🏭 com.toyFactory.model.service.ToyFactory
    java
    복사
    편집
    필드:
  • Scanner 입력기
  • Set toySet: 중복된 장난감 저장 방지
  • Map<Integer, String> materialsMap: 번호 → 재료 이름 매핑

메서드:

  • addMaterials(String... materials)
    → 가변 인자 사용하여 재료 여러 개 입력 가능
    🚀 com.toyFactory.run.Run
    java
    복사
    편집
    public static void main(String[] args) {
    // 실행 클래스
    }
    🔁 가변인자란?
    전달할 인자의 개수가 정해져 있지 않을 때 사용

java
복사
편집
public void addMaterials(String... materials) {
for (String m : materials) {
// 처리
}
}
🧠 오늘의 요약
Map은 Key-Value 구조이며, 다양한 구현체를 통해 상황에 맞게 사용

Properties는 설정 정보를 텍스트 파일로 관리할 때 활용

Iterator는 안전하고 일관된 컬렉션 순회 도구

실전 예제로 ToyFactory 예제를 설계하며, 실무 설계 감각도 함께 익힘

profile
개발자 희망자 입니다.

0개의 댓글