0712 학습 요약: Java Collection, Stream, 람다식
✅ 1. 컬렉션 프레임워크 정리
📌 List
- 순서 O, 중복 O
- 대표 클래스:
ArrayList, LinkedList
- 주요 메서드:
add(), get(), set(), remove(), size(), contains() 등
📌 Set
- 순서 X, 중복 X
- 대표 클래스:
HashSet
- 주요 메서드:
add(), remove(), contains(), clear() 등
- equals() & hashCode() 오버라이딩 필요 (객체 중복 체크 시)
📌 Map
- key-value 구조, key는 중복 불가, value는 중복 허용
- 대표 클래스:
HashMap
- 주요 메서드:
put(), get(), remove(), containsKey(), keySet() 등
✅ 2. 파일 입출력
📎 바이트 스트림
- 클래스:
FileInputStream, FileOutputStream
- 파일, 이미지 등 바이너리 데이터 처리
📎 문자 스트림
- 클래스:
FileReader, FileWriter, BufferedReader, BufferedWriter
- 텍스트 파일 읽고 쓰기 적합
📎 객체 입출력 (직렬화)
- 클래스:
ObjectOutputStream, ObjectInputStream
- Serializable 인터페이스 구현 필요
✅ 3. 람다식 & 함수형 인터페이스
함수형 인터페이스
- 추상 메서드가 하나만 존재
- ex) Runnable, Comparator, Predicate 등
람다식
(x, y) -> x + y;
활용 예: 필터링
List<Integer> evens = filter(numbers, n -> n % 2 == 0);
✅ 4. Stream API
map
List<Color> colors = apples.stream()
.map(Apple::getColor)
.collect(Collectors.toList());
filter
menu.stream().filter(Dish::isVegetarian).collect(Collectors.toList());
distinct, limit, skip, sorted
Comparator
- comparing, reversed, thenComparing 조합
menu.stream()
.sorted(Comparator.comparing(Dish::getCalories).reversed())
.limit(3)
.collect(Collectors.toList());
✅ 요약 정리
- 컬렉션 종류에 따라 데이터 구조와 제약 조건이 다름
- 입출력은 목적에 따라 바이트/문자/객체 스트림 구분
- 람다식은 함수형 인터페이스와 결합해 간결한 코드 작성 가능
- Stream API는 filter-map-sort 같은 연산을 연결해서 사용