🌀 Java Collection Framework · forEach문 정리
🔁 [ forEach문 ]
리스트의 각 요소를 순회하면서 실행문을 반복 수행하는 람다식 기반 반복문
| 항목 | 설명 |
|---|
| 📘 기능 | 리스트 내 요소를 반복변수에 대입하여 실행문을 반복 |
| ⚙️ 형식 | 리스트명.forEach( (반복변수) -> { 실행문 } ); |
| 🧩 람다식 함수 | 복잡한 함수 선언을 간소화한 표현 방식 |
💻 예시 코드
list.forEach((str) -> {
System.out.println(str);
});
💡 forEach는 List, Set, Map 등의 컬렉션에서도 사용 가능하다.
🧱 [ 컬렉션 프레임워크 ]
자바에서 자료를 효율적으로 관리하기 위한 자료구조 기반 프레임워크
| 항목 | 설명 |
|---|
| 📦 역할 | 다양한 자료구조의 틀을 제공 (데이터 저장 및 관리) |
| 🧩 주요 인터페이스 | List, Set, Map |
| 🧱 구현체 예시 | ArrayList, HashSet, HashMap 등 |
📋 [ List ]
인덱스를 기반으로 순서가 있고 중복을 허용하는 자료구조
💻 선언 예시
List<타입> 변수명 = new 구현체<>();
🧩 주요 특징
| 특징 | 설명 |
|---|
| 🧱 인덱스 존재 | 순서대로 저장 가능 |
| 🔁 중복 허용 | 동일한 데이터 저장 가능 |
| ⚙️ 배열/링크 구조 | 배열: 빠른 접근 / 링크: 삽입·삭제 효율적 |
🧠 구현체 종류
| 구현체 | 구조 | 특징 |
|---|
🧩 ArrayList | 배열 구조 | 메소드 비동기화 (단일 스레드 환경에 적합) |
🔗 Vector | 배열 구조 | 메소드 동기화 (멀티 스레드 환경에 적합) |
🪢 LinkedList | 링크 구조 | 중간 삽입/삭제에 효율적 |
⚙️ 주요 메소드
| 메소드 | 설명 |
|---|
.add(자료) | 리스트 마지막에 요소 추가 |
.add(인덱스, 자료) | 특정 인덱스 앞에 요소 추가 |
.set(인덱스, 자료) | 특정 위치 요소 수정 |
.get(인덱스) | 특정 인덱스 요소 반환 |
.size() | 리스트 내 요소 개수 반환 |
.contains(자료) | 지정한 자료 존재 여부 확인 |
.indexOf(자료) | 자료의 인덱스 반환 (없을 시 -1) |
.remove(인덱스) | 지정 인덱스 요소 삭제 |
.isEmpty() | 리스트가 비어있는지 여부 반환 |
.clear() | 모든 요소 삭제 |
🔷 [ Set ]
중복을 허용하지 않고 순서가 없는 집합 구조
💻 선언 예시
Set<타입> 변수명 = new 구현체<>();
🧩 주요 특징
| 특징 | 설명 |
|---|
| 🧱 인덱스 없음 | 순서가 없으며 중복 불가 |
| 🔗 집합형 구조 | 고유한 값만 저장 |
🧠 구현체 종류
| 구현체 | 특징 |
|---|
⚡ HashSet | 중복 없는 요소 저장, 빠른 검색 속도 |
🌳 TreeSet | 중복 없는 요소 저장 + 자동 정렬 (오름차순) |
🔗 LinkedHashSet | 중복 없는 요소 저장 + 링크 기반 (느림) |
⚙️ 주요 메소드
| 메소드 | 설명 |
|---|
.add(자료) | 요소 추가 (중복 시 무시됨) |
.size() | 요소 개수 반환 |
.contains(자료) | 특정 요소 존재 여부 반환 |
.remove(자료) | 특정 요소 삭제 |
.isEmpty() | 비어 있는지 여부 확인 |
.clear() | 모든 요소 삭제 |
| 🔄 향상된 for문 가능 | for(String s : set){} 형태로 순회 가능 |
🗂️ [ Map ]
Key + Value 쌍으로 구성된 자료구조 (순서 없음)
💻 선언 예시
Map<key타입, value타입> 변수명 = new 구현체<>();
🧩 주요 특징
| 특징 | 설명 |
|---|
| 🔑 Key-Value 구조 | Key는 중복 불가, Value는 중복 가능 |
| ⚙️ JSON 유사 구조 | Java에는 JSON이 없기 때문에 Map이 비슷한 역할 수행 |
| 🧱 Entry 단위 저장 | Key와 Value를 한 쌍으로 저장 |
🧠 구현체 종류
| 구현체 | 특징 |
|---|
🧩 HashMap | 가장 일반적인 Map 구조 |
🧱 HashTable | 동기화된 Map 구조 (멀티스레드 환경에 적합) |
🌳 TreeMap | Key 기준 자동 정렬 (오름차순) |
⚙️ Properties | 제네릭 없는 Map 구조 (설정 파일 등에서 사용) |
⚙️ 주요 메소드
| 메소드 | 설명 |
|---|
.put(key, value) | Key와 Value를 한 쌍으로 저장 (Key 중복 시 덮어씀) |
.get(key) | Key에 해당하는 Value 반환 |
.size() | Entry(쌍) 개수 반환 |
.remove(key) | 지정한 Key의 Entry 삭제 |
.contains(key/value) | 특정 Key 또는 Value 존재 여부 반환 |
.clear() | 모든 Entry 삭제 |
.isEmpty() | 비어있는지 여부 반환 |
.entrySet() | 모든 Entry를 Set으로 반환 |
.keySet() | 모든 Key를 Set으로 반환 |
.values() | 모든 Value를 List로 반환 |