Для удобства работы с коллекциями используются стримы.
Можно сделать весьма неплохой метод который будет возвращать стрим

Обычный POJO-класс с конструктором, геттерами и сеттерами

public class Person {
	private String name;
    private Integer age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}

}

Класс для собирания данных в коллекцию.
Метод getAllPersons собирает данные в коллекцию List. Данные могут храниться где угодно: БД, Excel, в самом коде.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Stream;

public class PersonCollect {
	
	private List<Person> persons = new ArrayList<>();

	public Stream<Person> persons() {
		return getAllPersons().stream();
	}
		
	public List<Person> getAllPersons() {
		if (persons.isEmpty()) {
			persons = Arrays.asList(new Person("Andrew", 17), new Person("Igor", 23),
					new Person("Ira", 23), new Person("Maxim", 24));
		}
		return persons;
	}

}

Неплохая идея, сделать метод persons(), который будет возвращать стрим, т.е. если мы захотим как-то модифицировать коллекцию, то
будем писать меньше кода.

Соответственно, если надо вывести только людей старше 20 лет, то код будет таким:

		 PersonCollect p = new PersonCollect();
		 List<Person> older20 = p.persons().filter(x->x.getAge()>20).collect(Collectors.toList());
		 System.out.println(older20);
Реклама