소개
Java Streams 는 데이터를 효율적이고 간결하게 처리하는 방법을 제공합니다. Streams 의 filter() 메서드는 조건 또는 술어 (predicate) 를 기반으로 주어진 스트림에서 요소를 필터링할 수 있게 해줍니다. 이 랩에서는 filter() 메서드를 사용하여 Java 에서 스트림의 요소를 필터링하는 방법을 배우겠습니다.
Java Streams 는 데이터를 효율적이고 간결하게 처리하는 방법을 제공합니다. Streams 의 filter() 메서드는 조건 또는 술어 (predicate) 를 기반으로 주어진 스트림에서 요소를 필터링할 수 있게 해줍니다. 이 랩에서는 filter() 메서드를 사용하여 Java 에서 스트림의 요소를 필터링하는 방법을 배우겠습니다.
정수 스트림을 생성하고 짝수를 필터링해 보겠습니다. 정수 목록을 선언하고, 이를 스트림으로 변환한 다음, filter() 메서드를 사용하여 짝수를 필터링합니다.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamFilter {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Stream<Integer> stream = numbers.stream();
Stream<Integer> evenNumbers = stream.filter(i -> i % 2 == 0);
List<Integer> result = evenNumbers.collect(Collectors.toList());
System.out.println(result); // Output: [2, 4, 6, 8, 10]
}
}
위 코드에서는 정수 목록을 선언하고, stream() 메서드를 사용하여 이를 스트림으로 변환한 다음, filter() 메서드를 사용하여 짝수를 필터링합니다.
문자열 스트림을 생성하고 특정 문자를 포함하는 문자열을 필터링해 보겠습니다. 문자열 목록을 선언하고, 이를 스트림으로 변환한 다음, filter() 메서드를 사용하여 특정 문자를 포함하는 문자열을 필터링합니다.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamFilter {
public static void main(String[] args) {
List<String> words = Arrays.asList("hello", "world", "java", "stream", "filter");
Stream<String> stream = words.stream();
char letter = 'l';
Stream<String> filteredWords = stream.filter(s -> s.indexOf(letter) != -1);
List<String> result = filteredWords.collect(Collectors.toList());
System.out.println(result); // Output: [hello, world, filter]
}
}
위 코드에서는 문자열 목록을 선언하고, stream() 메서드를 사용하여 이를 스트림으로 변환한 다음, filter() 메서드를 사용하여 문자 'l'을 포함하는 문자열을 필터링합니다.
사용자 정의 객체 스트림을 생성하고 조건을 기반으로 객체를 필터링해 보겠습니다. 사용자 정의 객체 목록을 선언하고, 이를 스트림으로 변환한 다음, filter() 메서드를 사용하여 조건을 기반으로 객체를 필터링합니다.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamFilter {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("John", 25),
new Person("Sarah", 30),
new Person("Mike", 35),
new Person("Emma", 40)
);
Stream<Person> stream = people.stream();
Stream<Person> filteredPeople = stream.filter(p -> p.getAge() > 30);
List<Person> result = filteredPeople.collect(Collectors.toList());
System.out.println(result); // Output: [Mike{name='Mike', age=35}, Emma{name='Emma', age=40}]
}
}
class Person {
private String name;
private int age;
public 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 name + "{name='" + name + '\'' + ", age=" + age + '}';
}
}
위 코드에서는 Person 타입의 사용자 정의 객체 목록을 선언하고, stream() 메서드를 사용하여 이를 스트림으로 변환한 다음, filter() 메서드를 사용하여 나이가 30 보다 큰 객체를 필터링합니다.
이 랩에서는 Java Streams 의 filter() 메서드를 사용하여 조건 또는 술어 (predicate) 를 기반으로 요소를 필터링하는 방법을 배웠습니다. filter() 메서드를 사용하여 정수, 문자열 및 사용자 정의 객체의 스트림을 필터링하는 작업을 수행했습니다.