7. Stream - (1) 개념 및 사용

한승록·2023년 10월 12일
0

자바 활용

목록 보기
7/9
post-thumbnail

1) Stream의 개념

java8버전 이전에는 반복문을 통한 연산을 실행했으나 복잡해지고 범위가 커질 수록 성능저하가 일어나게 됩니다.
Stream은 해당 문제를 해결하고자 java8버전부터 추가된 기능입니다.
람다식을 활용하여 각각의 구문을 따로 선언하지 않고 작성이 가능하며 쓰레드를 활용하여 병렬처리를 가능하게 하여 소요시간을 비약적으로 줄일 수 있게 되었습니다.

병렬처리(Parallel Operation)는 멀티 코어 환경에서 하나의 작업을 분할해 각각의 코어가 병렬적으로 처리하는 것으로 하드웨어의 발전과 동시에 작업속도의 측면에서 비교 불가한 성과를 불러온 방식입니다.




2) Stream 사용

Stream 사용필터정렬, 맵핑 통해 결과도출의 과정을 거치게 됩니다.

2-1) 필터(filter)

필터(filter)는 스트림 내 요소를 필터링 즉 조건을 맞추는 과정입니다.
Stream<String> stream = 
  names.stream()
  .filter(name -> name.contains("a"));
위의 코드를 통해 stream내부의 요소들을 확인하고 "a"가 포함되어 있는 요소들만 선별하게 됩니다.

2-2) 정렬(sorted)

정렬(sorted)는 스트림 내 요소를 오름차순 혹은 내름차순으로 정렬하는 과정입니다.

List<String> company_divisions = 
  Arrays.asList("Administration Dept", "Accounting Dept", "Human Resources Dept");
  
company_divisions.stream()
  .sorted()
  .collect(Collectors.toList());

2-3) 맵핑(map)

맵핑(map)은 스트림 내 요소를 변경 사항에 맞춰 새로운 결과를 적용시키거나 요소를 가져오는 과정입니다.
Stream<String> stream_capital = 
  names.stream()
  .map(String::toUpperCase);	// 해당요소의 문자열을 전부 대분자로 변환시킵니다.


Stream<String> steam_getAttribute = 
	company_divisions.stream()
    .map(Company::getName);		// Company라는 객체에서 부서이름만 추출하여 stream을 생성
 

2-4) 결과도출

결과도출에는 여러 방식이 있지만 그 중에도 자주 사용되는 collect를 예시로 보여드리겠습니다.
Stream<String> steam_getAttribute = 
	company_divisions.stream()
    .map(Company::getName)
    .collect(Collectors.toList());	// map의 과정을 거쳐 리스트 형태로 값을 불러옴
profile
개발 학습

0개의 댓글