문자열 자체는 Stream을 직접 생성할 수는 없지만, 문자열을 문자 배열로 변환하거나, 문자열을 List로 변환한 후 Stream을 사용할 수 있습니다.
1. 문자열을 문자 스트림으로 변환하기
String의 chars() 메서드를 사용하면 문자열의 각 문자를 IntStream 으로 변환할 수 있습니다. 이후 map() 과 같은 메서드를 사용하여 각 문자를 변환할 수 있습니다.
String str = "Hello";
str.chars()
.mapToObj(c -> (char) c) // IntStream을 Character Stream으로 변환
.forEach(System.out::println); // 각 문자를 출력
2. 특정 조건에 맞는 문자 필터링
문자 스트림에서 특정 조건에 맞는 문자만 필터링할 수 있습니다.
String str = "Hello, World!";
str.chars()
.filter(c -> c != 'o') // 'o'가 아닌 문자만 필터링
.mapToObj(c -> (char) c)
.forEach(System.out::print); // 결과: Hell, Wrld!
3. 문자열 분리 및 변환
문자열을 특정 구분자로 분리한 후 Stream 을 사용할 수도 있습니다.
String str = "apple,banana,orange";
str.split(",")
.stream() // 배열을 Stream으로 변환
.map(String::toUpperCase) // 각 과일 이름을 대문자로 변환
.forEach(System.out::println); // 결과: APPLE, BANANA, ORANGE
4. 문자열 연결
Stream을 사용하여 여러 문자열을 연결할 수도 있습니다.
List<String> fruits = Arrays.asList("apple", "banana", "orange");
String result = fruits.stream()
.collect(Collectors.joining(", ")); // "apple, banana, orange"
System.out.println(result);
5. 문자열의 통계 정보
문자열의 통계 정보를 얻는 것도 가능합니다.
String str = "Hello, World!";
long count = str.chars().count(); // 문자 수
System.out.println("Character count: " + count);
6. Stream을 이용한 슬라이싱
문자열을 문자 스트림으로 변환한 후 특정 인덱스 범위의 문자만 추출할 수 있습니다.
String str = "Hello, World!";
String slicedStream = str.chars()
.skip(7) // 처음 7개의 문자를 건너뜀
.limit(5) // 다음 5개의 문자만 선택
.mapToObj(c -> (char) c) // IntStream을 Character Stream으로 변환
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString(); // 결과: "World"
System.out.println(slicedStream);
반응형
'서버&백엔드 > 🔥 JAVA' 카테고리의 다른 글
JAVA | 문자열 슬라이싱 (1) | 2024.11.03 |
---|---|
JAVA | StringBuilder (0) | 2024.11.03 |
Java | 람다식 (0) | 2024.11.03 |
Java | 스트림(Stream) 완전 정복 - 숫자형 (0) | 2024.11.01 |
톰캣 자바 메모리풀 사이즈 설정 (0) | 2024.08.07 |