-
자바 람다, 스트림 복습!엘리스트랙 2023. 12. 30. 23:52728x90
람다란?
람다는 메서드를 하나의 식으로 표현한 코드블록이다.
람다식은 이름과 반환값이 없어 익명함수로 불린다
- 매개변수가 없는 경우
() -> 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)은 데이터를 처리하는 데 사용되는 새로운 추상화입니다. 스트림은 간결하고 가독성이 높은 코드를 작성할 수 있도록 해주며, 병렬 처리를 쉽게 할 수 있는 장점이 있습니다. 스트림은 데이터 소스를 추상화하고, 여러 중간 및 최종 연산을 사용하여 데이터를 처리합니다.
스트림의 특징:
- 컬렉션과의 연동:
- 스트림은 기존의 자바 컬렉션 인터페이스와 연동이 잘 되어 있습니다. 기존 컬렉션을 스트림으로 변환하거나, 스트림을 컬렉션으로 변환할 수 있습니다.
- 내부 반복(Internal Iteration):
- 스트림은 내부적으로 반복을 처리하므로, 개발자가 직접 반복을 다룰 필요가 없습니다. 이로 인해 코드가 간결해지고, 병렬 처리도 쉽게 할 수 있습니다.
- 지연 평가(Lazy Evaluation):
- 스트림은 지연 평가를 통해 필요한 시점에만 연산을 수행합니다. 따라서 모든 요소를 미리 계산하지 않고, 필요한 요소만 계산하여 효율적인 연산을 수행할 수 있습니다.
- 파이프라인(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