안녕하세요. 오늘은 자바의 Stream API를 활용하여 반복문 필터링, 소팅 등을 어떻게 구현할 수 있는지에 대해 다양한 예제를 통해 알아보겠습니다. Stream API는 자바 8에서 도입된 기능으로, 컬렉션을 기능형 프로그래밍 스타일로 처리할 수 있게 해줍니다.
Stream API란 무엇인가?
Stream API는 자바의 컬렉션 프레임워크에 대해 좀 더 직관적이고 선언적인 방식의 조작을 가능하게 해줍니다. 간단히 말해, 데이터를 한 줄의 코드로 간결하게 처리할 수 있도록 도와주는 강력한 도구입니다. 예를 들어, 원주율을 구하는 것처럼 수많은 수를 처리하는 작업을 Stream API를 통해 쉽게 할 수 있습니다.
1. 데이터 생성
먼저, 예제를 위해 간단한 학생(Student) 클래스를 정의하겠습니다. 학생은 이름과 점수를 가지며, 이를 리스트 형태로 저장할 것입니다. 코드는 다음과 같습니다.
import java.util.Arrays;
import java.util.List;
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;
}
@Override
public String toString() {
return "Student{name='" + name + "', score=" + score + "}";
}
}
// 학생 리스트 생성
List students = Arrays.asList(
new Student("Alice", 85),
new Student("Bob", 70),
new Student("Charlie", 95),
new Student("David", 65)
);
2. 필터링
이제 학생 리스트에서 점수가 80점 이상인 학생들을 필터링하는 방법을 알아보겠습니다.
import java.util.stream.Collectors;
List filteredStudents = students.stream()
.filter(student -> student.getScore() >= 80)
.collect(Collectors.toList());
System.out.println("점수 80점 이상의 학생들: " + filteredStudents);
예제 설명: 위의 코드는 Stream을 이용하여 점수가 80점 이상인 학생들만 필터링하여 새로운 리스트를 생성합니다.
3. 소팅
다음으로, 점수를 기준으로 학생을 정렬하는 방법을 살펴보겠습니다. 아래 코드를 참고하세요.
List sortedStudents = students.stream()
.sorted((s1, s2) -> Integer.compare(s2.getScore(), s1.getScore())) // 점수를 기준으로 내림차순 정렬
.collect(Collectors.toList());
System.out.println("점수 정렬된 학생들: " + sortedStudents);
예제 설명: 위의 코드는 Stream을 사용하여 점수 기준으로 내림차순 정렬합니다.
4. 점수 평균 계산
학생들의 점수 평균을 계산하는 방법도 Stream API를 이용하여 쉽게 구현할 수 있습니다.
double averageScore = students.stream()
.mapToInt(Student::getScore)
.average()
.orElse(0);
System.out.println("학생들의 평균 점수: " + averageScore);
예제 설명: stream()에 mapToInt()를 사용하여 학생의 점수를 int형 태입으로 매핑한 다음, 평균 값을 구합니다.
5. 결과 출력
최종적으로 모든 예제를 하나로 통합한 메인 메서드는 아래와 같습니다.
public static void main(String[] args) {
// 학생 리스트 생성
List students = Arrays.asList(
new Student("Alice", 85),
new Student("Bob", 70),
new Student("Charlie", 95),
new Student("David", 65)
);
// 필터링
List filteredStudents = students.stream()
.filter(student -> student.getScore() >= 80)
.collect(Collectors.toList());
System.out.println("점수 80점 이상의 학생들: " + filteredStudents);
// 소팅
List sortedStudents = students.stream()
.sorted((s1, s2) -> Integer.compare(s2.getScore(), s1.getScore()))
.collect(Collectors.toList());
System.out.println("점수 정렬된 학생들: " + sortedStudents);
// 평균 계산
double averageScore = students.stream()
.mapToInt(Student::getScore)
.average()
.orElse(0);
System.out.println("학생들의 평균 점수: " + averageScore);
}
결론: 위의 예제들을 통해 자바의 Stream API를 활용한 반복문 필터링, 소팅 및 평균 계산에 대해 알아보았습니다. 코드가 간결해지고 가독성이 높아지는 것을 느끼실 수 있으실 것입니다.
'IT > Java' 카테고리의 다른 글
Jsoup에서 인증서 error 우회하는 방법 (1) | 2025.03.24 |
---|---|
스프링 부트와 하이버네이트 JPA 기본 사용법 (1) | 2025.03.19 |
JAVA Spring Boot에서 Quartz를 활용한 간편한 작업 스케줄링 (0) | 2025.03.03 |
JAVA GSON 소개 (1) | 2025.03.01 |
JAVA JSON 라이브러리 구글 GSON 알아보자(Google Gson) (0) | 2020.03.11 |