this post was submitted on 24 Sep 2024
87 points (92.2% liked)

Programming

17668 readers
217 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] MagicShel 10 points 2 months ago* (last edited 2 months ago) (1 children)

I try to prefer .findAny() over .findFirst() because it will perform better in some cases (it will have to resolve whether there are other matches and which one is actually first before it can terminate - more relevant for parallel streams I think. findAny short circuits that) but otherwise I like the first. I'd probably go with some sort of composed predicate for the second, to be able to easily add new criteria. But I could be over engineering.

I mostly just posted because I think not enough people are aware of the reasons to use findAny as a default unless findFirst is needed.

[–] [email protected] 8 points 2 months ago (1 children)

For me I have the habit of doing findFirst because determinism is important where I work. But I agree with you if determinism is not of importance.

[–] MagicShel 3 points 2 months ago

I would only note that for the vast majority of my experience these streams can only return up to a single match. Determinism isn't really preserved by findFirst, either, unless the sort order is set up that way.

Finding the first Jim Jones in a table is no more reliable that finding any Jim Jones. But finding PersonId 13579 is deterministic whether you findFirst or findAny.

Perhaps you work in a different domain where your experience is different.