Как повторно вызвать функцию с 0 аргументами и собрать возвращаемые значения в список, используя stream / lambda в Java? - PullRequest
0 голосов
/ 28 февраля 2020

Скажем, я хотел бы создать «случайный» список из 100 пользователей, используя приведенную ниже функцию fakeRandomUser.

public class User {
    String name;

    static public User fakeRandomUser() {
        User user = new User();
        user.name = "foobar";
        return user;
    }

}

Возможно ли это сделать с помощью Stream API вместо добавления к список в al oop?

1 Ответ

4 голосов
/ 28 февраля 2020

Один из способов - создать IntStream из 100 элементов и сопоставить его с вашей fakeRandomUser функцией:

List<User> users = IntStream.range(0, 100)
    .mapToObj(e -> User.fakeRandomUser())
    .collect(Collectors.toList());

Другой способ - использовать Stream.generate(), вот так:

List<User> users = Stream.generate(User::fakeRandomUser)
    .limit(100)
    .collect(Collectors.toList())
...