본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/JAVA

[java] Stream 이해하기

by 미노드 2024. 1. 9.

스트림(Stream) 에 대한 간단한 이해가 필요합니다.

Stream을 이용해서 반복문을 최소화 시키거나,여러 작업을 위한 데이터를 만들고, 검증할때
유용하게 사용할 수 있습니다.

반드시 알아야 하는 개념으로 정리 해보려 합니다.

참고자료가 있나 싶어 찾아봤더니 점프투자바에서는 다음처럼 나왔습니다.
"스트림(stream)은 글자 그대로 해석하면 ‘흐름’이라는 뜻이다. 데이터가 물결처럼 흘러가면서 필터링 과정을 통해 여러 번 변경되어 반환되기 때문에 이러한 이름을 갖게 되었다."
https://wikidocs.net/157858

 

07-06 함수형 프로그래밍

자바는 Java 8 버전부터 함수형 프로그래밍을 지원하기 위해 **람다(lambda)**와 **스트림(stream)**이 도입되었다. 람다와 스트림을 사용하면 함수형 프로그래밍 …

wikidocs.net

Stream은 여러 기본형 타입을 지원합니다.
크게 문자 단위 Stream과 Byte 단위 Stream 으로 나뉩니다.

문자입력 Stream
(문자를 읽어들임)
문자출력 Stream
(문자를 다른곳에 넣기, 쓰기)
Reader Writer
BufferedReader BufferedWriter
LineNumberReader CharArrayWriter
CharArrayReader OutputStreamWriter
InputStreamReader FileWriter
FileReader FilterWriter
FilterReader PipedWriter
PushbackReader StringWriter
PipedReader
PrintWriter
StringReader  
Byte 입력 Stream
(바이트 단위로 입력받는)
Byte 출력 Stream
(Byte로 읽은결 내보낸다.)
InputStream OutputStream
FileInputStream FileOutputStream
PipedInputStream PipedOutputStream
FilterInputStream FilterOutputStream
LineNumberInputStream DataOutputStream
DataInputStream BufferedOutputStream
BufferedInputStream  PrintStream
PushbackInputStream ByteArrayOutputStream
ByteArrayInputStream ObjectputStream
SequenceInputStream  
StringBufferInputStream  
ObjectInputStream  

모두 외울 수는 없겠지만, 입력이나 출력에 문자열 타입으로 많이 사용되다보니 필요할 때 참고할 수 있으면 좋겠습니다.

배열에서 숫자를 위한 stream도 지원합니다.

IntStream LongStream DoubleStream

이처럼 Stream들이 수많이 있으며, 필터를 통해 특정 값을 반환하거나 값을 가공해나가며,
이후 마지막 연산으로 Stream을 종료하며 결과를 반환합니다.

Stream을 사용하는 가장 큰 목적은
개발 방법의 표준화 라고 생각합니다.
수많은 로직들을 구현하는데 다양한 방식이 사용되지만, Stream으로 이를 구현함으로써, 많은 사람들이 알고있는 표준 방식대로 구현하게끔 하여 이해를 높이는 것이 목적이라고 생각합니다.

다양한 로직으로 기능을 구현 할 수 있겠지만,
유지보수의 편의를 위해서라도 굳이 Stream을 쓰는 것도 있는 것 같습니다.

'IT기술 > JAVA' 카테고리의 다른 글

[Java] Optional 소개  (0) 2024.01.13
[Java] Java jks 만들기  (0) 2024.01.10
자바 정규표현식 기술 정리  (0) 2024.01.04
[Java] HashMap Hashtable 차이점, 구분하기  (0) 2023.12.30
[java] jar빌드 및 실행(Gradle)  (0) 2023.12.26