У меня есть List<Users>
. Я хочу получить индекс (первого) пользователя в потоке с конкретным именем пользователя. Я не хочу на самом деле требовать, чтобы User
был .equals()
для описанного User
, просто чтобы иметь одно и то же имя пользователя.
Я могу придумать уродливые способы сделать это (повторить и подсчитать), но похоже, что должен быть хороший способ сделать это, возможно, используя Streams. Пока что лучшее, что у меня есть:
int index = users.stream()
.map(user -> user.getName())
.collect(Collectors.toList())
.indexOf(username);
Это не худший код, который я когда-либо писал, но это не здорово. Это также не так гибко, поскольку он полагается на наличие функции сопоставления с типом с функцией .equals()
, которая описывает свойство, которое вы ищете; Я бы предпочел что-то, что могло бы работать для произвольного Function<T, Boolean>
Кто-нибудь знает как?