流式获取第一个满足布尔条件的元素的索引的方法是什么?

9 浏览
0 Comments

流式获取第一个满足布尔条件的元素的索引的方法是什么?

我有一个List。我想要获取流中具有特定用户名的(第一个)用户的索引。我不希望实际要求User与某个描述的User .equals(),只要具有相同的用户名即可。

我可以想到一些不好看的方法(迭代和计数),但感觉应该有一种好的方法来做到这一点,可能是使用Streams。到目前为止,我最好的方法是:

int index = users.stream()
    .map(user -> user.getName())
    .collect(Collectors.toList())
    .indexOf(username);

这并不是我写过的最糟糕的代码,但也不是很好。它也不是那么灵活,因为它依赖于将函数映射到具有.equals()函数的类型,描述您要查找的属性;我更希望有一些可以适用于任意Function的东西。有人知道如何做吗?

0