最佳答案
我有一个 List<Users>
。我希望获得流中具有特定用户名的(第一个)用户的索引。我实际上不想要求 User
是某些描述的 User
的 .equals()
,只是为了拥有相同的用户名。
我可以想到一些很难看的方法来做这件事(迭代和计数) ,但是感觉应该有一种很好的方法来做这件事,可能是通过使用 Streams。到目前为止,我最好的答案是:
int index = users.stream()
.map(user -> user.getName())
.collect(Collectors.toList())
.indexOf(username);
这不是我写过的最烂的代码,但也不是很好。它也没有那么灵活,因为它依赖于有一个映射函数到一个具有 .equals()
函数的类型,该函数描述您正在寻找的属性; 我更希望有一些能够适用于任意 Function<T, Boolean>
的东西
有人知道怎么做吗?