반응형
Stream의 mapToInt() 함수를 예제를 통해 쉽게 이해해보자
1. 예제로 이해하는 mapToInt
학생 객체의 리스트에서 특정 조건을 만족하는 학생을 찾고, 그들의 점수를 합산하는 작업
학생 클래스 선언
- 예제에서 사용하게 될 Student 클래스를 생성한다.
public class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
}
for문을 사용해서 합계를 계산하는 코드 작성
- 비교를 위해 stream을 사용하지 않고 for문을 사용하여 합계를 계산한다.
import java.util.Arrays;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
// 학생 리스트 생성
List<Student> students = Arrays.asList(
new Student("John", 85),
new Student("Jane", 90),
new Student("Adam", 76),
new Student("Tom", 80),
new Student("Jerry", 95)
);
// 점수가 80 이상인 학생의 점수 합계 계산
int sum = 0;
for (Student student : students) {
if (student.getScore() >= 80) {
sum += student.getScore();
}
}
// 결과 출력
System.out.println("The sum of scores of students who scored 80 or above: " + sum);
}
}
Stream을 사용해서 합산하는 코드 작성
- mapToInt() 는 Stream의 각 요소를 int로 변환하는 작업을 수행한다.
import java.util.Arrays;
import java.util.List;
public class StreamExample {
public static void main(String[] args) {
// 학생 리스트 생성
List<Student> students = Arrays.asList(
new Student("John", 85),
new Student("Jane", 90),
new Student("Adam", 76),
new Student("Tom", 80),
new Student("Jerry", 95)
);
// 점수가 80 이상인 학생의 점수 합계 계산
int sum = students.stream()
.filter(student -> student.getScore() >= 80)
.mapToInt(Student::getScore)
.sum();
// 결과 출력
System.out.println("The sum of scores of students who scored 80 or above: " + sum);
}
}
- 이 경우에, Student 객체의 getScore() 메소드를 메소드 참조를 통해 사용해서 각 학생의 점수를 가져오고, 이 점수를 mapToInt()를 통해 Student객체를 Student개체 안의 int로 변환한다. 이렇게 하면, 결과적으로 Student 객체의 타입을 가진 Stream이 int의 타입을 가진 Stream으로 변환된다.
- 이와 유사하게, Java 8의 Stream API에는 다른 타입으로 변환하는 mapTo 메소드도 있다. 예를 들어, mapToLong과 mapToDouble 메소드가 있다. 이 메소드들은 각각 long과 double로 변환하는 작업을 수행한다.
예제를 통해 자바 스트림을 이해해보자👇🏻👇🏻
반응형
'JAVA' 카테고리의 다른 글
[Java] 동시성과 병렬 처리 part2: 함정, 고급 패턴, 성능 최적화 (1) | 2023.11.01 |
---|---|
[Java] 동시성과 병렬 처리 part1 (1) | 2023.10.31 |
[Java] 예제로 이해하는 자바 스트림(stream) (0) | 2023.09.27 |
[Java] ObjectMapper란 무엇인가? (0) | 2023.08.16 |
[Java] 익명 클래스 (Anonymous Class)란? (0) | 2023.08.09 |