본문 바로가기
Java

Java Stream

by Aslan0 2024. 9. 5.

안녕하세요! 오늘은 자바 프로그래밍에서 매우 유용한 기능인 Java Stream 에 대해 알아보겠습니다. Java 8부터 도입된 이 기능은 데이터 처리에 있어 많은 편리함을 제공합니다. 그럼 시작해 보겠습니다!

1. Java Stream의 정의

Java Stream은 데이터 소스(컬렉션, 배열 등)에서 요소를 추출하고, 이를 처리하는 데 필요한 다양한 연산을 수행할 수 있는 API입니다. 스트림은 데이터를 추상화하여 다루기 때문에, 코드가 간결하고 가독성이 높아지는 장점이 있습니다.

2. Java Stream의 특징

  • 지연 실행(Lazy Evaluation): 스트림 연산은 필요할 때만 실행됩니다. 즉, 중간 연산이 호출되더라도 최종 결과가 필요할 때까지 실제로는 실행되지 않습니다.
  • 파이프라인(Pipeline): 여러 개의 스트림 연산을 연결하여 사용할 수 있습니다. 각 연산은 이전 결과를 입력으로 받아 새로운 결과를 생성합니다.
  • 병렬 처리(Parallel Processing): 스트림 API는 병렬 처리를 지원하여 멀티코어 CPU를 활용할 수 있습니다.

3. Java Stream 사용 예시

아래와 같은 리스트가 있다고 가정해 보겠습니다.

java List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");

 

이 리스트에서 이름의 길이가 5보다 큰 이름만 필터링하고, 대문자로 변환한 후 출력하는 코드는 다음과 같습니다.

 

java names.stream().filter(name -> name.length() > 5)
	.map(String::toUpperCase)
    .forEach(System.out::println);

위 코드에서는 filter 메서드를 사용하여 조건에 맞는 요소만 남기고, map 메서드를 통해 각 요소를 대문자로 변환합니다. 마지막으로 forEach 메서드로 결과를 출력합니다.

4. 주요 메서드 설명 및 사용법

(1) filter()

filter() 메서드는 주어진 조건을 만족하는 요소만 남기는 역할을 합니다.

 

java List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); 
List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0)
	.collect(Collectors.toList());

(2) map()

map() 메서드는 각 요소에 대해 주어진 함수를 적용하여 새로운 스트림을 생성합니다.

java List<String> words = Arrays.asList("hello", "world"); 
List<Integer> wordLengths = words.stream().map(String::length).collect(Collectors.toList());

(3) reduce()

reduce() 메서드는 스트림의 모든 요소를 하나로 결합하는 데 사용됩니다.

java Optional<Integer> sum = numbers.stream().reduce((a, b) -> a + b); 
sum.ifPresent(System.out::println);

5. 코딩 테스트에서의 활용 방법

코딩 테스트에서는 주어진 문제를 해결하기 위해 효율적인 데이터 처리가 중요합니다. 예를 들어 배열에서 중복된 값을 제거하고 정렬된 리스트로 반환해야 하는 경우 아래와 같이 사용할 수 있습니다.

java Integer[] array = ; 
List<Integer> uniqueSortedNumbers = Arrays.stream(array).distinct() // 중복 제거 
			.sorted() // 정렬 .collect(Collectors.toList()); 
System.out.println(uniqueSortedNumbers);

위와 같은 방식으로 문제 해결 시 간결하게 코드를 작성할 수 있으며 가독성도 높아집니다.

결론 및 요약

오늘은 Java Stream에 대해 알아보았습니다. 이 기능은 데이터 처리 시 매우 유용하며 코드 작성 시 많은 도움을 줍니다. 다양한 메서드를 활용하여 복잡한 로직도 간단하게 구현할 수 있으니 꼭 익혀두시길 바랍니다!

여러분도 아래 예시와 같이 Java Stream을 활용해 보세요! 😊


태그: #Java #Stream #자바스트림 #프로그래밍 #코딩테스트

[참고자료]

[1] 티스토리 - [Java] 자바 스트림(Stream) 사용법 및 예제 - A6K 개발노트 (https://hbase.tistory.com/171)

[2] 티스토리 - [JAVA] Stream에 대한 사용법 및 내용 정리 - soTech - 티스토리 (https://ssow93.tistory.com/38)

[3] velog - [Java] 스트림(Stream) 정리 (https://velog.io/@yun8565/Java-%EC%8A%A4%ED%8A%B8%EB%A6%BCStream-%EC%A0%95%EB%A6%AC)

[4] 티스토리 - Java 스트림 (Stream) 사용법 및 정리 1/3 (Map, Filter, FlatMap ..) (https://develop-writing.tistory.com/137)

 

'Java' 카테고리의 다른 글

기초 Java 변수  (0) 2021.05.12

댓글