流式获取第一个满足布尔条件的元素的索引的方法是什么?
- 论坛
- 流式获取第一个满足布尔条件的元素的索引的方法是什么?
9 浏览
流式获取第一个满足布尔条件的元素的索引的方法是什么?
我有一个List
。我想要获取流中具有特定用户名的(第一个)用户的索引。我不希望实际要求User
与某个描述的User
.equals()
,只要具有相同的用户名即可。
我可以想到一些不好看的方法(迭代和计数),但感觉应该有一种好的方法来做到这一点,可能是使用Streams。到目前为止,我最好的方法是:
int index = users.stream() .map(user -> user.getName()) .collect(Collectors.toList()) .indexOf(username);
这并不是我写过的最糟糕的代码,但也不是很好。它也不是那么灵活,因为它依赖于将函数映射到具有.equals()
函数的类型,描述您要查找的属性;我更希望有一些可以适用于任意Function
的东西。有人知道如何做吗?