J'ai un List<Users>
. Je veux obtenir l'index de la (première) de l'utilisateur dans le flux avec un nom d'utilisateur particulier. Je ne veux pas réellement besoin de l' User
être .equals()
pour certains décrite User
, juste pour avoir le même nom d'utilisateur.
Je ne peux penser à de mauvaises manières de le faire (itérer et compter), mais il se sent comme il devrait être une belle façon de le faire, probablement en utilisant Ruisseaux. Jusqu'à présent, le meilleur que j'ai est:
int index = users.stream()
.map(user -> user.getName())
.collect(Collectors.toList())
.indexOf(username);
Ce qui n'est pas le pire de code que j'ai jamais écrit, mais ce n'est pas grand. C'est pas non plus souple, car il repose sur l'existence d'une fonction de mappage à un type avec un .equals()
fonction qui décrit la propriété que vous recherchez, je préfère avoir quelque chose qui pourrait fonctionner pour arbitraire Function<T, Boolean>
Quelqu'un sait comment?