ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 람다, 스트림 복습!
    엘리스트랙 2023. 12. 30. 23:52
    728x90

     

     

     

    람다란?

    람다는 메서드를 하나의 식으로 표현한 코드블록이다.

    람다식은 이름과 반환값이 없어 익명함수로 불린다

     

    • 매개변수가 없는 경우
    () -> System.out.println("Hello, World!");

     

    • 하나의 매개변수를 받는 경우
    (name) -> System.out.println("Hello, " + name);

     

    • 여러 매개변수를 받는 경우
    (x, y) -> {
        int sum = x + y;
        System.out.println("Sum: " + sum);
    }

     

    • 값을 반환하는 경우
    (x, y) -> x + y

     

     

     

    스트림

    자바 8에서 도입된 스트림(Stream)은 데이터를 처리하는 데 사용되는 새로운 추상화입니다. 스트림은 간결하고 가독성이 높은 코드를 작성할 수 있도록 해주며, 병렬 처리를 쉽게 할 수 있는 장점이 있습니다. 스트림은 데이터 소스를 추상화하고, 여러 중간 및 최종 연산을 사용하여 데이터를 처리합니다.

    스트림의 특징:

    1. 컬렉션과의 연동:
      • 스트림은 기존의 자바 컬렉션 인터페이스와 연동이 잘 되어 있습니다. 기존 컬렉션을 스트림으로 변환하거나, 스트림을 컬렉션으로 변환할 수 있습니다.
    2. 내부 반복(Internal Iteration):
      • 스트림은 내부적으로 반복을 처리하므로, 개발자가 직접 반복을 다룰 필요가 없습니다. 이로 인해 코드가 간결해지고, 병렬 처리도 쉽게 할 수 있습니다.
    3. 지연 평가(Lazy Evaluation):
      • 스트림은 지연 평가를 통해 필요한 시점에만 연산을 수행합니다. 따라서 모든 요소를 미리 계산하지 않고, 필요한 요소만 계산하여 효율적인 연산을 수행할 수 있습니다.
    4. 파이프라인(Pipeline):
      • 스트림은 여러 중간 연산과 최종 연산을 연결하여 파이프라인을 형성할 수 있습니다. 중간 연산은 스트림을 반환하고, 최종 연산은 최종 결과를 반환합니다.

     

     

    람다와 스트림

     

    컬렉션의 요소 필터링

    List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Emma");
    
    // 길이가 4 이상인 이름만 필터링
    List<String> filteredNames = names.stream()
                                       .filter(name -> name.length() >= 4)
                                       .collect(Collectors.toList());
    
    System.out.println(filteredNames);

     

    리스트의 요소 반환

    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
    
    // 각 이름을 대문자로 변환
    List<String> uppercasedNames = names.stream()
                                       .map(name -> name.toUpperCase())
                                       .collect(Collectors.toList());
    
    System.out.println(uppercasedNames);

     

    정렬

    List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
    
    // 길이순으로 정렬
    names.sort((name1, name2) -> Integer.compare(name1.length(), name2.length()));
    
    System.out.println(names);

     

     

     

     

    728x90

    '엘리스트랙' 카테고리의 다른 글

    스프링 MVC와 REST API!  (0) 2024.01.07
    스프링 시작 복습!  (0) 2023.12.31
    JS DOM, Event 복습!  (1) 2023.12.27
    SQL 복습!  (0) 2023.12.24
    자바 클래스 복습!  (0) 2023.12.23
Designed by Tistory.