카테고리 없음

[Java Stream Programming] 9. Generate Stream

코딩펭귄 2024. 2. 14. 17:46

- 값으로 스트림 만들기 : 안씀

Stream<String> stream = Stream.of("Java8", "Lambdas", "In", "Action");

stream.map(String::toUpperCase).forEach(System.out::println);

- 스트림 비우기 : 안씀

Stream<String> emptyStream = Stream.empty();

 

 배열로 스트림 만들기 : 제일 많이 씀!
int[] numbers = {2, 3, 5, 7, 11, 13};
int sum = Arrays.stream(numbers).sum(); // 41
public class GenerateExample {

	public static void main(String[] args) {
		//배열로 스트림 만들기 1 (int배열일때)
		int[] numbers = {2, 3, 5, 7, 11, 13};
		Arrays.asList(numbers) //List<int[]>
			  .stream() //Stream<int[]>
			  .flatMapToInt(intArray -> Arrays.stream(intArray)) //IntStream
			  .boxed() //Stream<Integer>
//			  .forEach(number -> System.out.println(number));
			  .forEach(System.out::println);

		//배열로 스트림 만들기 2 (int배열일때)
		Arrays.stream(numbers) //IntStream
			  .boxed() //Steram<Integer>
//			  .forEach(number -> System.out.println(number))
			  .forEach(System.out::println);
		
			//String배열일땐?
		String[] chars = {"a", "b", "c"};
		Arrays.asList(chars) //List<String>
			.stream() //Stream<String>
			.forEach(System.out::println);
		
		Arrays.stream(chars) //Stream<String>
			 .forEach(System.out::println);

 

파일로 스트림 만들기
//파일로 스트림 만들기 1
File textFile = new File("C:\\Java Exam", "Java Exam.txt");
List<String> lines = null;
try {
    lines = Files.readAllLines(textFile.toPath(), Charset.forName("UTF-8"));

}catch(IOException ioe) {
    ioe.printStackTrace();
}
if (lines != null) {
    lines.stream() // Stream<List>
         .forEach(System.out::println);
}

//파일로 스트림 만들기 2 (더 심플한 방법)
// Auto Closable Try ~ ccatch
try (Stream<String> streamLines = Files.lines(textFile.toPath(), Charset.forName("UTF-8"))){
    streamLines.forEach(System.out::println);
} 
catch(IOException ioe) {
    ioe.printStackTrace();
}

try {
    Stream<String> streamLines = Files.lines(textFile.toPath(), Charset.forName("UTF-8"));
    streamLines.forEach(System.out::println);
}catch(IOException e){
    e.printStackTrace();
}

 

리스트로 스트림 만들기
//리스트로 스트림 만들기
List<Integer>numberList = List.of(1,2,3,4,5,6,7,8,9);
numberList.stream() //Stream<Integer>
            .map(number -> number * 2)
            .forEach(System.out::println);

// Map Data --> List Data 변경.
Map<String, String> menuMap = new HashMap<>();
menuMap.put("빅맥1", "16000");
menuMap.put("빅맥2", "26000");
menuMap.put("빅맥3", "36000");
menuMap.put("빅맥4", "46000");
menuMap.put("빅맥5", "56000");
menuMap.put("빅맥6", "66000");
menuMap.put("빅맥7", "76000");

//menuMap의 key로 구성된 List 만들어보기
//Map을 Stream으로 변경을 하려면 entrySet을 이용해야한다
List<String> menuName = menuMap.entrySet() //Set<Entry<key, value>> --> set<Entry<String, String>>
                               .stream() //Stream<Entry<key, value>> --> Stream<Entry<String, String>>
                               .map(entry -> entry.getKey()) //Stream<String> menuMap의 key값을 달라
                               .collect(Collectors.toList()); //List<String>
menuName.forEach(System.out::println);		

}}