Stream(스트림) 정리

1852 단어 JavaJava

특징

  • 원본 데이터 소스를 변경하지는 않는다
List<Integer> list = Array.asList(3,1,5,4,2);
List<Integer> sortedList = list.stream().sorted()	// list를 정렬하고
				.collect(Collectors.toList());		// 새로운 List에 저장
System.out.println(list);		// 3,1,5,4,2	
System.out.println(sotredList);	// 1,2,3,4,5
  • Iterator처럼 일회용이라서 사용되면 소모됨
strStream.forEach(System.out::println);	// 모든 요소를 화면에 출력(최종연산)
int numOfStr = stream.count();			// 에러발생..이미 스트림은 사용된 이후라서닫힘
										// 다시 사용할려면 새로운 스트림 생성해야됨
  • 최종 연산 전까지 중간연산은 수행하지 않는다
    (즉, 중간에 distinct, limit, sorted 같은 멤버는 최종연산 전까지는 그냥 그렇게 하겠다고 암시하는 것
IntStream intStream = new Random().ints(1,46)	// 1~45범위의 무한 스트림
intStream.distinct().limit(6).sorted()			// 중간 연산(중복제거/6개로자르고/정렬)
		.forEach(i->System.out.print(i+","));	// 최종 연산
  • 스트림은 작업을 내부 반복으로 처리한다.
stream.forEach(System.out::println);	//for문에서 출력을 이런식으로 간결하게
  • 스트림의 작업을 병렬로 처리 - 병렬스트림
    (큰 작업을 여러 쓰레드로 나누어 처리)
Stream<String> strStream = Stream.of("dd","aaa""CC","cc","b");
int sum = strStream.parallel()	//	병렬 스트림으로 전환(속성만 변경)
			.mapToInt(s -> s.length().sum();	// 모든 문자열의 길이의 합

※출처: 남궁성의 정석코딩(유튜브)

좋은 웹페이지 즐겨찾기