连接布尔元素groovy的列表

时间:2013-08-22 12:36:53

标签: groovy arraylist

我有一个布尔元素列表:

  def list=[true,false,true,true]

我问是否存在以下方法:

  list.joinBoolean('&&')

<假

因为:真实&&虚假&&真实&& true = false

list.joinBoolean('||')

<真的

因为:true ||假||真||真=真

如果它不存在,我知道如何进行循环以获得预期的结果;

AND

  boolean tmp=true;
  list.each{e->
     tmp=tmp && e;    
  }
   return tmp;

  boolean tmp=false;
  list.each{e->
     tmp=tmp || e;    
  }
   return tmp;

3 个答案:

答案 0 :(得分:4)

anyevery方法可以派上用场

答案 1 :(得分:4)

或者:

list.inject { a, b -> a && b }
list.inject { a, b -> a || b }

如果list可以为空,则需要使用更长的注入形式:

list.inject(false) { a, b -> a && b }
list.inject(false) { a, b -> a || b }

或使用下面的anyevery方法


顺便说一下

其他答案中提到的anyevery函数的工作方式如下:

list.any()
list.every()

或(更长的形式)

list.any { it == true }
list.every { it == true }

答案 2 :(得分:1)

不,没有这样的方法。但是你可以在没有每次循环的情况下做到这一点:

def list=[true,false,true,true]
list.any{it==true} // will work as list.joinBoolean('||')
list.every{it==true} // will work as list.joinBoolean('&&')