我可以在C#中执行此操作:
int CheetahNumber = 77;
Animal Cheetah = Model.Animals
.Where(e => e.AnimalNo.Equals(CheetahNumber))
.FirstOrDefault();
例如在Java中我有ArrayList<Animal> Animals
如何查询这样的ArrayList?感谢。
答案 0 :(得分:33)
Java 8引入了Stream API,允许类似于Linq中的构造。
例如,您的查询可以表达:
int cheetahNumber = 77;
Animal cheetah = animals.stream()
.filter((animal) -> animal.getNumber() == cheetahNumber)
.findFirst()
.orElse(Animal.DEFAULT);
如果存在默认值,你显然需要锻炼,在这种情况下这似乎很奇怪,但我已经证明了这一点,因为这是你问题中的代码所做的事情。
答案 1 :(得分:3)
您可以使用流来尝试:
public String getFirstDog(List<Animal> animals) {
Animal defaultDog = new Dog();
Animal animal = animalNames.stream(). //get a stream of all animals
filter((s) -> s.name.equals("Dog")).findFirst(). //Filter for dogs and find the first one
orElseGet(() -> defaultDog ); //If no dog available return an default animal.
//You can omit this line.
return animal;
}
答案 2 :(得分:2)
即使Java没有为您提供LINQ相同的构造,但是您可以在某些级别上实现使用Java 8流构造的LINQ操作。
比如一个
List<String> items = new ArrayList<String>();
items.add("one");
items.add("two");
items.add("three");
Stream<String> stream = items.stream();
stream.filter( item -> item.startsWith("o") );