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