Notice
Recent Posts
Recent Comments
Link
«   2026/09   »
일 월 화 수 목 금 토
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

seaking110 님의 블로그

Enum과 Stream 본문

Today I Learned

Enum과 Stream

seaking110 2025. 1. 17. 19:49

ENUM 

  • 특정 값들의 집합을 미리 정의, 이를 상수처럼 사용할 수 있도록 도와주는 자료형
  • 타입 안정성 제공 -> 강타입의 자료형이기 때문에 잘못된 값 사용을 방지
  • 변수명을 누가 봐도 알 수 있는 네이밍으로 정해야 한다.
  • 너무 많은 값을 ENUM으로 사용하면 오히려 가독성이 떨어지므로 관련성이 높은 값만 사용

 

  • Main
    public static void main(String[] args) {
        Item sowrd = new Item("Sword" , ItemType.WEAPON);
        Item potion = new Item("Potion", ItemType.CONSUMABLE);
        
        System.out.println(sowrd);
        System.out.println(potion);
    }
  • ItemType
public enum ItemType {
    WEAPON,

    CONSUMABLE,

    ARMOR
}

 

 

  • enum은 JVM이 고유한 하나의 객체로 관리
  • 항상 같은 메모리 주소를 가짐
  • 따라서 equal보다 참조 비교 == 가 안전하고 정확
  • equal도 실행이 되긴함 

Stream

  • 컬렉션 데이터를 처리하기 위한 함수형 방식
  • 간결한 문법
  • 가독성 향상
  • 요구사항이 많아지면 많아 질수록 stream의 가독성 향상은 아주 좋음
  • 지연 처리를 통해 필요한 시점에만 연산을 수행하여 효율적

 

  • withoutstream
        List <Item> weapons = new ArrayList<>();
        for (Item item : items) {
            if (item.getType() == ItemType.WEAPON) {
                weapons.add(item);
            }
        }

        for (Item weapon : weapons) {
            System.out.println(weapon);
        }
  • withstream
        List <Item> weapons = items.stream()
                .filter(item -> item.getType().equals(ItemType.WEAPON)).toList();

        weapons.forEach(System.out::println);

 

  • 성능차이
    • 성능차이의 3가지 이유
    • 1. 초기화
    • 2. 데이터 크기
    • 3. 병렬 (비동기/동기)
  • if문은 단순 반복문 = 초기화 비용 x
  • if문은 데이터 크기에 상관없이 고정된 성능
  • stream은 작은 데이터 셋 말고 고가용성을 필요로 하는 큰 데이터 셋에서 효율적
  • stream의 경우 병렬 스트림 방식 사용 -> 멀티 코어 이용

 

  • toList와 forEach는 같이 쓰려면 변수에 넣는 식이 아닌 그냥 둬야한다!

'Today I Learned' 카테고리의 다른 글

백엔드 개발자 필수 지식  (0) 2025.01.20
키오스크 과제 트러블 슈팅  (0) 2025.01.20
분할 정복을 이용한 거듭제곱  (0) 2025.01.16
키오스크 과제 3일차  (0) 2025.01.15
키오스크 과제 2일차  (1) 2025.01.14