2015-11-03 45 views
-1

我有这样的动物名单:获取对象的数量与具体的匹配属性列表中的Java

Animal : 
    int id; 
    boolean carnivore; 
    int leg; 

在一个功能,我想检索,例如,动物的数量在列出哪些是食肉动物(食肉动物是真的)。

而不是做这个的:

Integer nb = 0; 
    for (Animal a : ListAnimal) { 
     if (a.isCarnivore()) { 
      nb++; 
     } 
    } 

有没有更好的方式来做到这一点? 谢谢。

+0

不是真的我的想法。你只需要像你刚才那样循环和检查。你不会发现任何更好的,我想。 – MiKE

+0

什么意思最好? – ergonaut

回答

2

在java中8,使用isCarnivore()方法,从列表中Predicatefilter()流,然后调用count()

long nb = ListAnimal.stream().filter(Animal::isCarnivore).count(); 
2

使用int代替nb变量而不是Integer

在Java中8的另一种版本是

long nb = ListAnimal.stream().filter(Animal::isCarnivore).count(); 
相关问题