Stream(기초)

SeungJoo
|2023. 10. 30. 12:46
반응형

Stream

데이터 처리 작업을 간결하게 수행하고 병렬 처리를 쉽게 지원하며 성능을 향상하는 역할을 하며 중간 매개자 역활도 가지고 있습니다.

stream 사용

stream 에는 중간연산(Intermediate Operation)과 최종연산(Terminal Operation)이 있습니다.
중간연산은 이런저런 작업이 필요 없이 여러 번 사용 가능합니다.
최종연산은 최종적으로 나아지는 결과물을 말하며 한 번만 사용 가능합니다.

 

stream의 종류는 다양하고 자주 사용하는 stream 알아보겠습니다.

 

정수형 stream

int[] scores = {100, 80, 97, 67, 80}

Arrays.stream(scores)
        .filter(x -> x >= 90)
        .forEach(x -> System.out.println(x)); // 아래 내용과 결과는 같습니다.
Arrays.stream(scores)  			   	  //단지 forEach 출력 부분만 다릅니다.
        .filter(x -> x >= 90)
        .forEach(System.out::println);

Sum 이용

// 점수의 합 (sum) 이용
int sum = (int) Arrays.stream(scores)
        .filter(x -> x >= 90).sum();
System.out.println("90점 이상인 학생의 총점은 " + sum + "점입니다.");

문자열 stream

String[] langs = {"Spring", "java", "javaScript", "Python", "c#", "c++", c}
Stream<String> langStream = Arrays.stream(langs);

~~으로 시작하는 것을 찾을 때는 startsWith 사용

Arrays.stream(langs)
        .filter(x -> x.startsWith("~~으로 시작"))
        .forEach(System.out::println);

~~ 이라는 글자를 포함시킨 것을 찾을 때는 contains 사용

Arrays.stream(langs)
        .filter(x -> x.contains("~~이라는 글자 포함 단어"))
        .forEach(System.out::println);

컬렉션 stream

컬렉션은 리스트, 세트, 맵등을 의미하며 스트림을 사용함으로 데이터 처리와 연산을 간결하고 효과적으로 수행 가능합니다.(아직 리스트 스트림밖에 모르기 때문에 세트와 맵은 공부 후에 추가)

Stream<String> langListStream = langList.stream();

리스트 stream

collection은 toList로 반환을 해주기 때문에 list로 지정 해야 합니다.

★ intellij에서 제공하는 ctrl + alt + v로 List 지정이 가능합니다.

List<String> langListStartsWithC = langList.stream()
        .filter(x -> x.contains("c"))
        .map(String::toUpperCase)
        .collect(Collectors.toList());
langListStartsWithC.stream().forEach(System.out::println):
728x90

'JAVA' 카테고리의 다른 글

Pubilc과 Private  (1) 2023.11.01
Lambda  (0) 2023.10.29
Static 사용?  (0) 2023.10.27