Crear un flujo de objetos personalizados
Vamos a crear un flujo de objetos personalizados y filtrar los objetos basados en una condición. Declararemos una lista de objetos personalizados, la convertiremos en un flujo y luego usaremos el método filter()
para filtrar los objetos basados en una condición.
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 + '}';
}
}
En el código anterior, declaramos una lista de objetos personalizados del tipo Person
, la convertimos en un flujo usando el método stream()
y luego filtramos los objetos cuya edad es mayor que 30 usando el método filter()
.