TIL - 20250712

juni·2025년 7월 12일

TIL

목록 보기
63/316

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 같은 연산을 연결해서 사용

0개의 댓글