[Java] Stream: mapToInt 함수로 점수 합산하기

2023. 9. 27. 22:32·JAVA
반응형
 
 

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] 예제로 이해하는 자바 스트림(stream)

자바8 이상 문법인 Stream을 알아보자 📌 서론 이번 포스트에서는 간단한 예제를 통해 stream을 이해해보는것이 목표다. 1. Stream 예제: 특정 문자열을 찾고 대문자로 변환 문자열의 List에서 특정 문

curiousjinan.tistory.com

 

반응형

'JAVA' 카테고리의 다른 글

[Java] HTTP 서버 구현: postman과 자바 HttpClient를 사용한 요청  (23) 2023.12.30
[Java] 자바 리플렉션(Reflection) 실습하기  (1) 2023.11.18
[Java] 자바 리플렉션(reflection)이란?  (2) 2023.11.15
[Java] 예제로 이해하는 자바 스트림(stream)  (0) 2023.09.27
[Java] ObjectMapper란 무엇인가?  (0) 2023.08.16
'JAVA' 카테고리의 다른 글
  • [Java] 자바 리플렉션(Reflection) 실습하기
  • [Java] 자바 리플렉션(reflection)이란?
  • [Java] 예제로 이해하는 자바 스트림(stream)
  • [Java] ObjectMapper란 무엇인가?
Stark97
Stark97
문의사항 또는 커피챗 요청은 링크드인 메신저를 보내주세요! : https://www.linkedin.com/in/writedev/
  • Stark97
    오늘도 개발중입니다
    Stark97
  • 전체
    오늘
    어제
    • 분류 전체보기 (247)
      • 개발지식 (20)
        • 스레드(Thread) (8)
        • WEB, DB, GIT (3)
        • 디자인패턴 (8)
      • JAVA (21)
      • Spring (88)
        • Spring 기초 지식 (35)
        • Spring 설정 (6)
        • JPA (7)
        • Spring Security (17)
        • Spring에서 Java 활용하기 (8)
        • 테스트 코드 (15)
      • 아키텍처 (6)
      • MSA (15)
      • DDD (11)
      • gRPC (9)
      • Apache Kafka (18)
      • DevOps (23)
        • nGrinder (4)
        • Docker (1)
        • k8s (1)
        • 테라폼(Terraform) (12)
      • AWS (32)
        • ECS, ECR (14)
        • EC2 (2)
        • CodePipeline, CICD (8)
        • SNS, SQS (5)
        • RDS (2)
      • notion&obsidian (3)
      • AI 탐험대 (1)
      • 팀 Pulse (0)
  • 링크

    • notion기록
    • 깃허브
    • 링크드인
  • hELLO· Designed By정상우.v4.10.0
Stark97
[Java] Stream: mapToInt 함수로 점수 합산하기
상단으로

티스토리툴바