문제
다음 Java 코드의 실행 결과를 쓰시오.
Javaimport java.util.*; import java.util.stream.*; public class Main { public static void main(String[] args) { List<Person> people = Arrays.asList( new Person("Alice", 25), new Person("Bob", 30), new Person("Charlie", 20) ); people.stream() .sorted(Comparator.comparing(Person::getAge).reversed() .thenComparing(p -> p.getName().length())) .limit(2) .forEach(p -> System.out.print(p.getName().charAt(0))); } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } }
정답
BA
BA
해설
나이를 기준으로 내림차순 정렬하면 Bob(30), Alice(25), Charlie(20) 순서이다. 같은 나이가 없으므로 thenComparing은 실제 정렬 결과에 영향을 주지 않는다. limit(2)로 Bob과 Alice만 남고, 각 이름의 첫 글자를 출력하므로 결과는 BA이다.