Java 8 introduces the Stream API that allows similar constructs to those in Linq.
Your query for example, could be expressed:
int cheetahNumber = 77;
Animal cheetah = animals.stream()
.filter((animal) -> animal.getNumber() == cheetahNumber)
.findFirst()
.orElse(Animal.DEFAULT);
You'll obviously need to workout if a default exists, which seems odd in this case, but I've shown it because that's what the code in your question does.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…