푸린세스

스트림만들기 - 컬렉션,배열 본문

카테고리 없음

스트림만들기 - 컬렉션,배열

푸곰주 2022. 3. 29. 13:47
package ex14;

import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public class Ex14_05 {//스트림만들기 -콜렉션

	public static void main(String[] args) {
		List<Integer> list = Arrays.asList(1,2,3,4,5);
		Stream<Integer> intStream = list.stream();//list를 Stream으로 변환
		//정확히는 변환이 아니라 list를 데이터소스로 하는 새로운 스트림을 생성.
		//Stream의 모든요소를 출력
		intStream.forEach(System.out::print); //forEach()최종연산
		//intStream.forEach(System.out::print);//에러
		//stream has already been operated upon or closed IllegalStateException:
		//Stream을 다시 생성하면 된다.
		
		//stream은 1회용. stream에 대해 최종연산을 수행하면 stream이 닫힌다.
		intStream = list.stream();//ㅣlist로부터 stream을 생성.
		intStream.forEach(System.out::print);
		
		//스트림만들기 -배열
		
		Stream<String> strStream = Stream.of("a","b","c");
		strStream.forEach(System.out::println);
		
		Stream<String> strStream1 = Stream.of(new String[]{"a","b","c","d"});
		strStream1.forEach(System.out::println);
		//forEach로 stream이 닫쳤는데 다시 생성하려고 하니까 변수중복일어나는건 왜그런거지??*
		String[] strArr = new String[] {"a","b","c","d"}; 
		Stream<String> strStream2 = Stream.of(strArr); //strStream1
		//Stream<String> strStream4 = Arrays.stream(strArr); 위에와 동일
		Stream<String> strStream3 = Stream.of(new String[] {"a","b","c","d"});
		//위 두줄을 한줄로 합친것
		
		
		Stream<String> strStream4 = Arrays.stream(strArr);
//		
		int[] intArr = {1,2,3,4,5}; //String으로만드려면?
		IntStream intStream2 = Arrays.stream(intArr);// 기본형스트림
//		intStream2.forEach(System.out::println);
//		
//		System.out.println("count="+intStream2.sum());//최종연산
		System.out.println("count="+intStream2.average());
//		
	//기본형int[]배열 안되고 Integer[]배열이여야함. //자동으로 오토박싱으로 integer객체배열로됨
//		Integer[] intArr = {new Integer(1),2,3,4,5}; //String으로만드려면?
//		Stream<Integer> intStream2 = Arrays.stream(intArr);//Integer객ㄹ체스트림으로
////		intStream2.forEach(System.out::println);
////		
//		System.out.println("count="+intStream2.count());		
//		
		//Stream<T>는 숫자외에도 여러타입의 스트림이 가능해야하므로 숫자스트림에만 사용할 수 있는
		//sum(),average()를 넣지않은것.
	}
}