반응형
📖 문제
List에 저장되어 있는 Member 객체들 중에서,
모든 멤버의 평균 나이를 구해 출력해보세요.
※ Stream API의 적절한 메서드를 활용해야 합니다.
📦 예제 클래스
Member.java
public class Member {
private String name;
private int age;
public Member(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
Example.java
public class Example {
public static void main(String[] args) {
List<Member> list = Arrays.asList(
new Member("홍길동", 30),
new Member("파이썬", 40),
new Member("감자바", 26)
);
double avg = list.stream()
// 빈 공간
System.out.println("평균 나이: " + avg);
}
}
📌 예제 정답
double avg = list.stream()
.mapToInt(Member::getAge)
.average()
.getAsDouble();
💻 실행 결과
평균 나이: 32.0
💬 코드 설명
- .stream() : List를 스트림으로 변환합니다.
- .mapToInt(Member::getAge) : 각 멤버 객체에서 나이(int)를 추출합니다.
- .average() : 평균을 계산하는 OptionalDouble을 반환합니다.
- .getAsDouble() : 평균값을 double로 반환합니다.
💡 학습 포인트
- mapToInt()로 정수 스트림 변환
객체에서 숫자 데이터를 추출하려면 mapToInt()를 사용합니다. - OptionalDouble 처리 이해
.average()는 빈 스트림일 경우를 고려해 OptionalDouble을 반환하므로, .getAsDouble()을 사용하여 실제 값을 얻습니다. - Stream으로 평균 계산하는 패턴 익히기
컬렉션에서 특정 필드의 평균을 구할 때 자주 사용하는 패턴입니다.
📌 마무리 정리
- 사용자님의 답안은 문제의 요구를 완벽히 반영한 정확하고 효율적인 구현입니다.
- 이 문제는 객체 필드 추출 + 평균 연산 + Optional 처리라는 Stream API의 핵심 조합을 실습하기 위한 좋은 예제입니다.
- 실무에서도 나이, 점수, 가격 등의 평균값을 구하는 상황에서 가장 자주 사용되는 패턴 중 하나입니다.
'Java > 연습문제' 카테고리의 다른 글
자바 연습문제 - HashMap을 이용한 전화번호부 프로그램 구현 (0) | 2025.05.27 |
---|---|
자바 연습문제 - Stream으로 객체 리스트를 그룹핑하기 (0) | 2025.05.26 |
자바 연습문제 - Stream으로 조건에 맞는 객체만 수집하기 (0) | 2025.05.26 |
자바 연습문제 - Stream을 이용한 문자열 필터링 (대소문자 무시) (0) | 2025.05.26 |
자바 연습문제 - 메서드 참조(Method Reference)로 평균 계산 (0) | 2025.05.22 |
자바 연습문제 - 람다식과 함수형 인터페이스로 과목별 평균 점수 계산 (0) | 2025.05.22 |