Hello

Java 스트림의 중간연산2

by 볼빵빵오춘기

map() - 스트림의 요소 변환하기

예제 코드

더보기
import java.io.*;
import java.util.stream.*;

class Ex14_6 {
	public static void main(String[] args) {
		File[] fileArr = { new File("Ex1.java"), new File("Ex1.bak"),
			new File("Ex2.java"), new File("Ex1"), new File("Ex1.txt")
		};

		Stream<File> fileStream = Stream.of(fileArr);

		// map()으로 Stream<File>을 Stream<String>으로 변환
		Stream<String> filenameStream = fileStream.map(File::getName);
		filenameStream.forEach(System.out::println); // 모든 파일의 이름을 출력

		fileStream = Stream.of(fileArr);  // 스트림을 다시 생성

		fileStream.map(File::getName)     // Stream<File> → Stream<String>
			  .filter(s -> s.indexOf('.')!=-1)   // 확장자가 없는 것은 제외
			  .map(s -> s.substring(s.indexOf('.')+1)) // 확장자만 추출
			  .map(String::toUpperCase)     // 모두 대문자로 변환
			  .distinct()                   //  중복 제거
			  .forEach(System.out::print);  // JAVABAKTXT	

		System.out.println();
	}
}

⇒ // 확장자가 없는 것은 제외, // 확장자만 추출, 모두 대문자로 변환, 중복 제거 주석처리 해보고 결과 확인하기

 

peek() - 스트림의 요소를 소비하지않고 엿보기

더보기

⇒ 디버깅 용도로 씀

 

예제 코드

더보기
import java.io.*;
import java.util.stream.*;

class Ex14_6 {
	public static void main(String[] args) {
		File[] fileArr = { new File("Ex1.java"), new File("Ex1.bak"),
			new File("Ex2.java"), new File("Ex1"), new File("Ex1.txt")
		};

		Stream<File> fileStream = Stream.of(fileArr);

		// map()으로 Stream<File>을 Stream<String>으로 변환
		Stream<String> filenameStream = fileStream.map(File::getName);
		filenameStream.forEach(System.out::println); // 모든 파일의 이름을 출력

		fileStream = Stream.of(fileArr);  // 스트림을 다시 생성

		fileStream.map(File::getName)     // Stream<File> → Stream<String>
			  .filter(s -> s.indexOf('.')!=-1)   // 확장자가 없는 것은 제외
				.peek(s -> System.out.printf("filename=%s%n",s))
			  .map(s -> s.substring(s.indexOf('.')+1)) // 확장자만 추출
				.peek(s -> System.out.printf("extension=%s%n",s))
			  .map(String::toUpperCase)     // 모두 대문자로 변환
			  .distinct()                   //  중복 제거
			  .forEach(System.out::print);  // JAVABAKTXT	

		System.out.println();
	}
}

 

flatMap() - 스트림의 스트림을 스트림으로 변환

 

예제 코드

더보기
import java.util.*;
import java.util.stream.*;

class Ex14_7 {
	public static void main(String[] args) {
		Stream<String[]> strArrStrm = Stream.of(
			new String[]{"abc", "def", "jkl"},
			new String[]{"ABC", "GHI", "JKL"}
		);

//		Stream<Stream<String>> strStrmStrm = strArrStrm.map(Arrays::stream);
		Stream<String> strStrm = strArrStrm.flatMap(Arrays::stream);

		strStrm.map(String::toLowerCase)
			   .distinct()
			   .sorted()
			   .forEach(System.out::println);
		System.out.println();

		String[] lineArr = {
			"Believe or not It is true",
			"Do or do not There is no try",
		};

		Stream<String> lineStream = Arrays.stream(lineArr);
		lineStream.flatMap(line -> Stream.of(line.split(" +")))
			.map(String::toLowerCase)
			.distinct()
			.sorted()
			.forEach(System.out::println);
		System.out.println();
	}
}

 

'👩🏻‍💻 About 프로그래밍 > Java' 카테고리의 다른 글

Java collect()와 Collectors  (0) 2023.12.11
Java 스트림의 최종연산  (0) 2023.12.11
Java 스트림의 중간연산  (0) 2023.12.11
Java 스트림의 연산  (0) 2023.12.11
Java 스트림 만들기  (1) 2023.12.11

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기