[Java] Stream

권재현·2024년 10월 11일

JAVA

목록 보기
2/11

정의

  • Java 8부터 제공되는 한번 더 추상화된 자료구조와 자주 사용하는 프로그래밍 API를 제공한것이다.
  • 람다를 활용하여 배열과 컬렉션을 함수형으로 처리할 수 있는 API이다.

특징

  • 원본의 데이터를 변경하지 않는다.
  • 일회용이며 한번 사용하면 재사용이 불가하다.
  • 스트림은 만들기 -> 가공하기 -> 결과 만들기 순으로 진행된다.

    자주 사용되는 것들

  • 만들기
String[] array = new String[]{"a", "b", "c"}
Stream<String> stream = Arrays.stream(arr); // 배열 스트림

List<String> list = Arrays.asList("1","2","3");
Stream<String> stream = list.stream(); //컬렉션 스트림
  • 가공하기
List<객체> resultList = 객체 리스트.stream()
                                .filter(객체 A -> (Integer) A.getValue() > 숫자)A의 value가 숫자보다 큰 것만 스트림에 삽입하라
                               .toList(); // 필터

Stream<String> exampleStream = list.stream().map(String::toUpperCase);
	//[A,B,C] 대문자로 변환
    또는 
   .map(Integers::parseInt);
    // 문자열 -> 정수로 변환 //컬렉션 스트림
  • 결과 만들기
 public static OperatorType FindOperatorType(String type){
        return Arrays.stream(values())
                        .filter(x -> x.getOperation().equals(type))
                        .findAny().orElse(null);
    } //type과 일치하는 열거형 Enum 상수를 하나를 리턴한다.

결론

  • 모든 stream 메소드를 다루지 못해 아쉽지만 stream을 사용함으로써 불필요한 절차나 코드를 획기적으로 줄일 수 있어 적극적으로 활용할 수 있을거 같다.
profile
여전히 헤매이고 있습니다.

0개의 댓글