상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 자바에서 Stream API를 사용하여 데이터 필터링하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Java의 <a href='https://sangseek.com/sangseeks/Stream API/ko'>Stream API</a>는 Java 8에서 도입된 기능으로, 컬렉션(리스트, 세트 등)과 같은 데이터 구조에서 데이터를 처리하는 데 매우 유용합니다. Stream API를 사용하면 데이터 필터링, 매핑, 정렬, 집계 등의 작업을 간결하고 효율적으로 수행할 수 있습니다. 이 글에서는 Stream API를 사용하여 데이터 필터링하는 방법에 대해 자세히 설명하겠습니다. 1. Stream API의 기본 개념Stream은 데이터 소스(컬렉션, 배열 등)에서 파생된 일련의 요소를 처리할 수 있는 시퀀스입니다. Stream은 다음과 같은 특징을 가지고 있습니다:- 지연 평가(Lazy Evaluation) : Stream의 연산은 최종 연산이 호출될 때까지 실행되지 않습니다.- 중간 연산과 최종 연산 : 중간 연산(예: `filter`, `map`)은 Stream을 반환하며, 최종 연산(예: `collect`, `forEach`)은 결과를 생성합니다.- 파이프라인 : 여러 개의 중간 연산을 연결하여 하나의 처리 파이프라인을 구성할 수 있습니다. 2. 데이터 필터링의 기본 사용법데이터 필터링은 주어진 조건에 맞는 요소만을 선택하는 작업입니다. Stream API에서는 `filter` 메서드를 사용하여 데이터를 필터링할 수 있습니다. `filter` 메서드는 Predicate를 인자로 받아, 조건을 만족하는 요소만 포함된 새로운 Stream을 반환합니다. 예제: 리스트에서 <a href='https://sangseek.com/sangseeks/짝수/ko'>짝수</a>만 필터링하기```javaimport java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class StreamFilterExample { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) // 짝수만 필터링 .collect(Collectors.toList()); // 결과를 리스트로 수집 System.out.pr<a href='https://sangseek.com/sangseeks/intl/ko'>intl</a>n(evenNumbers); // [2, 4, 6, 8, 10] }}```위의 예제에서 `filter` 메서드는 각 요소에 대해 짝수인지 확인하는 <a href='https://sangseek.com/sangseeks/람다/ko'>람다</a> 표현식을 사용하여 조건을 정의합니다. 조건을 만족하는 요소만 포함된 새로운 Stream이 생성되고, `collect` 메서드를 통해 결과를 리스트로 변환합니다. 3. 복잡한 필터링 조건필터링 조건은 단순한 경우뿐만 아니라 복잡한 경우에도 적용할 수 있습니다. 여러 조건을 조합하여 사용할 수 있으며, `and`, `or`, `negate` 메서드를 통해 Predicate를 조합할 수 있습니다. 예제: 특정 조건을 만족하는 객체 필터링```javaimport java.util.Arrays;import java.util.List;import java.util.stream.Collectors;class Person { String name; int age; Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "Person{name='" + name + "', age=" + age + '}'; }}public class StreamFilterComplexExample { public static void main(String[] args) { List<Person> people = Arrays.asList( new Person("Alice", 30), new Person("Bob", 25), new Person("Charlie", 35), new Person("David", 20) ); List<Person> filteredPeople = people.stream() .filter(p -> p.getAge() > 25) // 나이가 25세 이상인 사람 .filter(p -> p.getName().startsWith("A")) // 이름이 'A'로 시작하는 사람 .collect(Collectors.toList()); System.out.println(filteredPeople); // [Person{name='Alice', age=30}] }}```위의 예제에서는 `Person` 객체의 리스트에서 나이가 25세 이상이고 이름이 'A'로 시작하는 사람들을 필터링합니다. 여러 개의 `filter` 메서드를 <a href='https://sangseek.com/sangseeks/체이닝/ko'>체이닝</a>하여 복잡한 조건을 쉽게 구현할 수 있습니다. 4. 최종 연산필터링된 결과를 얻은 후, 최종 연산을 통해 결과를 수집하거나 출력할 수 있습니다. `collect` 외에도 `forEach`, `count`, `anyMatch`, `allMatch`, `noneMatch` 등의 다양한 최종 연산을 사용할 수 있습니다. 예제: 필터링된 결과의 <a href='https://sangseek.com/sangseeks/개수/ko'>개수</a> 세기```javalong count = people.stream() .filter(p -> p.getAge() > 25) .count(); // 조건을 만족하는 사람의 수System.out.println("Number of people older than 25: " + count); // 2``` 5. 결론Java의 Stream API를 사용하면 데이터 필터링을 간결하고 효율적으로 수행할 수 있습니다. `filter` 메서드를 통해 조건에 맞는 요소를 선택하고, 다양한 최종 연산을 통해 결과를 처리할 수 있습니다. 이러한 기능들은 코드의 가독성을 높이고, 복잡한 데이터 처리 작업을 쉽게 수행할 수 있도록 도와줍니다. Stream API를 활용하여 데이터 필터링을 포함한 다양한 데이터 처리 작업을 수행해 보시기 바랍니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기