Java
[Stream] 스트림 중간처리와 최종 연산 : mapToInt(), average()
kwanghyup
2020. 6. 16. 15:04
스트림으로 보낼 축구선수객체를 생성하는 클래스
속성 : 선수이름, 슈팅지수
public class SoccerPlayer {
private String name;
private int shooting; // 슈팅지수
public SoccerPlayer(String name, int shooting) {
this.name = name;
this.shooting = shooting;
}
public int getShooting() {
return shooting;
}
}
import java.util.Arrays;
import java.util.List;
public class MapToIntAndAverage {
public static void main(String[] args) {
SoccerPlayer ribery = new SoccerPlayer("리베리", 102);
SoccerPlayer robben = new SoccerPlayer("로벤",101);
SoccerPlayer lewandowski = new SoccerPlayer("레반도프스키",104);
SoccerPlayer muller = new SoccerPlayer("뮐러",104);
List<SoccerPlayer> teamBayern = Arrays.asList(ribery,robben,lewandowski,muller);
double teamShootAvg = teamBayern.stream() // [1]
.mapToInt(SoccerPlayer::getShooting) // [2]
.average() // [3]
.getAsDouble(); // [4]
System.out.println("바이에른 뮌헨팀의 평균슈팅지수 : " + teamShootAvg);
/*
[1] 리스트의 객체를 스트림으로 보냄
[2] 객체의 getShooting 메서드를 참조하여 새로운 IntStream 생성
[3] 새로 생성된 IntStream 평균을 구함 반환형이 OptionalDouble
[4] OptionalDouble형을 double형으로 반환
*/
}
}