Java相当于C#Linq中的Where子句

jas*_*son 15 java lambda

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

int CheetahNumber = 77;
Animal Cheetah = Model.Animals
   .Where(e => e.AnimalNo.Equals(CheetahNumber))
   .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

例如在Java中我有 ArrayList<Animal> Animals

我怎样才能查询这样的ArrayList?谢谢.

Nic*_*olt 37

Java 8引入了Stream API,它允许类似于Linq中的构造.

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

int cheetahNumber = 77;

Animal cheetah = animals.stream()
  .filter((animal) -> animal.getNumber() == cheetahNumber)
  .findFirst()
  .orElse(Animal.DEFAULT);
Run Code Online (Sandbox Code Playgroud)

如果存在默认值,你显然需要锻炼,在这种情况下这似乎很奇怪,但我已经证明了这一点,因为这就是你问题中的代码所做的事情.