본문 바로가기
Java/stream

Java Stream 예시 1

by S.T.Lee 2022. 11. 13.
package lec08.fileio04.stream.ex1;

import java.util.List;
import java.util.stream.Stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.Random;
import java.util.stream.DoubleStream;

public class StreamMain01 {
	
	public static void main(String[] args) {
		
		List<String> strList01 = new ArrayList<String>();
		strList01.add("반도체");
		strList01.add("가전제품");
		strList01.add("휴대폰");
		strList01.add("자동차");
		strList01.add("배");
		
		strList01.stream().sorted().forEach(i -> System.out.print(i + "  "));
		System.out.println();
		
		String[] strArray = new String[] {"Alpha", "Bravo", "Charlie", "Delta"};
		List<String> cvtStrList = Arrays.asList(strArray);
		cvtStrList.stream().forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		Stream<String> cvtStream01 = Arrays.stream(strArray);
		cvtStream01.forEach(i -> System.out.print(i + " "));
		System.out.println();
		//중요 stream은 한번 소모하고 나면 재활용이 안된다.
		
		int[] intArray = new int[] {1,23,4,5,6};
		IntStream cvtStream02 = Arrays.stream(intArray, 2,3);
		//Stream<Integer>는 안된다.
		cvtStream02.forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		//int, long, double 우형은 Arrays.stream이 작동하지 않는다.
		Stream<String> cvtStream03 = Stream.of(strArray);
		cvtStream03.forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		System.out.println("++++++++++++++++++++++++++++++");
		
		Stream<String> streamCompany = Stream.of("Samsung", "LG", "Hyundai", "Sk");
		streamCompany.forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		Stream<String> streamCountry = Stream.of("Korea", "US", "France", "Germany");
		streamCountry.forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		IntStream intStream01 = IntStream.range(1, 7);
		intStream01.forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		IntStream intStream02 = IntStream.rangeClosed(1, 7);
		intStream02.forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		IntStream intsRandom01 = new Random().ints();
		intsRandom01.limit(5).forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		IntStream intsRandom02 = new Random().ints(3); //ints로 갯수 제한 
		intsRandom02.forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		System.out.println("================");
		
		DoubleStream doublesRandom01 = new Random().doubles();
		doublesRandom01.limit(2).forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		DoubleStream doublesRandom02 = new Random().doubles(5);
		doublesRandom02.forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		DoubleStream doubleStream01 = DoubleStream.of(0.1, 0.2, 0.3, 0.4, 0.5);
		doubleStream01.forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		System.out.println("===========================");
		
		Double[] arrayDouble = new Double[] {0.3, 0.31, 0.32, 0.33};
		Stream<Double> doubleStream02 = Arrays.stream(arrayDouble);
		doubleStream02.forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		Stream<String> generateString01 = Stream.generate(() -> "Good company");
		generateString01.limit(3).forEach(i -> System.out.print(i + "   "));
		System.out.println();
		
		generateString01 = Stream.generate(() -> "Good DDD");
		generateString01.limit(1).forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		System.out.println("===========================");
		
		Stream<Double> generateMathRandom01 = Stream.generate(()-> Math.random() * 10);
		generateMathRandom01.limit(3).forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		Stream<Double> generateAnotherMathRandom = Stream.generate(Math::random);
		generateAnotherMathRandom.limit(3).forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		System.out.println("===========================");
		
		Stream<Integer> iterateStream01 = Stream.iterate(1,  i -> i+3);
		iterateStream01.limit(5).forEach(i -> System.out.print(i + " "));
		System.out.println();
		
		Stream<Double> iterateStream02 = Stream.iterate(1.0,  i -> i-3);
		iterateStream02.limit(5).forEach(i -> System.out.print(i + " "));
		System.out.println();
	}
	
}