Java Stream 살펴 보기 C# 개발자가

몬난아·2021년 8월 15일
0

Java Stream에서 코드를 보다가 처음 막혀서 velog를 작성하기 시작했는데 먼가 순서가 변경된것 같다.

관련자료를 검색하다보니 아무래도 Java Stream에 대해서 정리하고 지나가는것이 순서인듯하여 간단하게 작성하기로 하였습니다.

java Stream() 이라는 함수가 있고 해당 함수를 호출하면 Stream 형태를 반환해주는것으로 확인됩니다.

다소 C#익숙한 사람에게는 Iterator패턴으로 List형 컬렉션이 구성되어있을텐데 구지 Stream()을 호출 하는것이 다소 어색할수 있지만 해당부분까지 학습하고 넘어갈 시간이 없기때문에 패스하고

java Stream == C# IEnumerable 와 같은 역활을 하고 있다는정도까지만 학습한다.

그리고 Java에서는 Stream에서의 역활을 2가지로 구분하고 있는것으로 보인다.

중개연산, 최종연산 으로 나눠지고 있으며 짧게 봤을때는 해당 개념은 C#과 동일해보이나 c#에서는 해당 구분에 대한 용어가 있었는지는... 생각이 나질 않는다.

중계연산 : Fluent객체처럼 계속이어서 작업을 할 수 있는 함수들을 말한다.
최종연산 : 최종적으로 값을 리턴하여 값을 생성하는 함수들을 말한다.

중개연산의 종류는 다음과 같다.

Filter(C# Where) -> 필터링해서 스트림 반환

Map(C# Select) -> 각 요소를 연산(concat등)

Peek(학습해야할것 같다) -> map과 유사하게 각 요소에 어떤 연산을 적용할 때 사용

Sorted(C# OrderBy ThenBy) -> 스트림의 요소들을 정렬해줌

Limited(C# Take같지만.. 학습후 수정) -> 갯수 제한

Distinct(C# Distinct와 동일) -> 중복 제거

Skip(n) (C# Skip) -> 처음 n개의 요소는 제외하고 나머지 요소들로 새로운 스트림을 만든다.

mapToInt, mapToLong, mapToDouble -> 해당 타입의 스트림으로 바꿔준다.

최종연산은 다음과 같다.

count(), min(), max(), sum(), average() -> 카운팅, 최소, 최대, 합계, 평균

reduce (C# Aggregate)-> 누적된 값을 계산하는 함수

forEach -> map이나 peek의 최종연산 버전으로 각 요소를 돌면서 처리할 수 있음.

collect (C# ToList, ToDictionary 함수로존제) -> 스트림을 모아주는 기능으로 toMap, toSet, toList로 스트림을 다시 컬렉션으로 바꿔줌.

iterator (C# GetEnumerator()) -> Iterator를 반환

noneMatch (C# Contains등을 !조건을 통해서 처리해야할듯..) -> 최종 스트림의 '모든' 요소들이 조건을 '만족하지 않는지' 판단해서 boolean 값 리턴.

anyMatch (C# Any) -> 스트림이 '하나'라도 조건을 '만족'하는지 판단해서 boolean 값 리턴.

allMatch (C# All) -> 스트림의 '모든' 요소들이 조건을 '만족하는지'를 판단해서 boolean 값 리턴.

일단 종류와 미채 정보정도까지만 나열하고 너미지는 사용하면서 알게 되면 수정하거나 다시 추가 하는뱡향으로 진행해야할것 같다.

참고자료

https://jeong-pro.tistory.com/165

profile
잘~ 사는게 목표인사람

0개의 댓글