Как вытащить объект по 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
}