Как вытащить объект по id из Dao?

Есть User'ы с полем "id" (1, 2 , 3). Они все помещены в Dao с помощью ArrayList. Нужен метод, который выводил бы их по id. Допусти ввели id "1" и нам выводит User'а с этим id.


Ответы (1 шт):

Автор решения: DronDron

Я так понял Вам нужен метод который принимает список User'ов и id, и возвращает пользователя из списка с id равному переданному.
Если предположить что класс User выглядит так:

public class User {
    private Long id;
    private String firstName, lastName;

    public User(Long id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", firstName='" + firstName + '\'' +
                ", lastName='" + lastName + '\'' +
                '}';
    }
}

То можно написать подобный метод:

public static User findIn(List<User> userList, Long id) {
    return userList.stream().filter(u -> u.getId().equals(id)).findAny().orElse(null);
}

Вернёт null если не найдёт пользователя с нужным id.
Тестовая программа: private static final String[] firstnames = { "John", "Jim", "Anya", "Dave" }; private static final String[] lastnames = { "i", "dont", "know", "any lastnames" };

public static void main(String[] args) {
    // Создание списка пользователей
    List<User> userList = IntStream.range(0, 4)
            .mapToObj(id -> new User((long) id, firstnames[id], lastnames[id]))
            .collect(Collectors.toList());
    System.out.println(Finder.findIn(userList, 1L)); // User{id=1, firstName='Jim', lastName='dont'}
    System.out.println(Finder.findIn(userList, 5L)); // null
}
→ Ссылка