문제
다음 Java 코드의 실행 결과를 쓰시오.
Javaimport java.util.*; import java.util.stream.*; public class Main { public static void main(String[] args) { List<String> words = Arrays.asList("apple", "banana", "cherry", "date"); Optional<String> result = words.stream() .filter(s -> s.length() > 4) .map(s -> s.substring(0, 2).toUpperCase() + s.substring(2)) .reduce((s1, s2) -> s1.charAt(0) > s2.charAt(0) ? s1 : s2); System.out.println(result.orElse("NONE")); } }
정답
CHerry
CHerry
해설
- words = ["apple", "banana", "cherry", "date"]
- filter(s -> s.length() > 4): 길이가 4보다 큰 문자열만 필터링 → ["apple", "banana", "cherry"]
- map 연산: 각 문자열의 앞 2글자를 대문자로, 나머지는 그대로
- "apple" → "APple"
- "banana" → "BAnana"
- "cherry" → "CHerry"
- reduce((s1, s2) -> s1.charAt(0) > s2.charAt(0) ? s1 : s2): 첫 번째 문자의 ASCII 값이 더 큰 문자열을 선택
- "APple" vs "BAnana": 'A'(65) < 'B'(66) → "BAnana" 선택
- "BAnana" vs "CHerry": 'B'(66) < 'C'(67) → "CHerry" 선택
- 최종 결과: "CHerry"