Java等效于C#Linq中的Where子句


问题内容

我可以在C#中做到这一点:

int CheetahNumber = 77;
Animal Cheetah = Model.Animals
   .Where(e => e.AnimalNo.Equals(CheetahNumber))
   .FirstOrDefault();

例如在Java中 ArrayList<Animal> Animals

我如何查询这样的ArrayList?谢谢。


问题答案:

Java 8引入了Stream
API
,该API允许与Linq中的构造类似的构造。

例如,您的查询可以表示为:

int cheetahNumber = 77;

Animal cheetah = animals.stream()
  .filter((animal) -> animal.getNumber() == cheetahNumber)
  .findFirst()
  .orElse(Animal.DEFAULT);

如果存在默认值,您显然需要锻炼,在这种情况下,这似乎很奇怪,但是我已经展示了它,因为这就是您问题中的代码所做的。