Arrays 如何在Velocity模板语言(VTL)中获得数组中的最大值

Arrays 如何在Velocity模板语言(VTL)中获得数组中的最大值,arrays,velocity,vtl,apache-velocity,Arrays,Velocity,Vtl,Apache Velocity,使用Velocity模板语言(VTL),我希望获得数组的最大值。我在ApacheVelocity的文档中查找了很长一段时间,但找不到一种方法来实现这一点 以下是我的示例阵列: #set($array = [2,4,12,3,1,4,34,8]) $sorter.sort($array) 在本例中,我希望得到34如果只需要最大值,那么对数组进行排序就有点过分了 如果您可以访问Velocity上下文,那么最好的选择是让Java工具为您完成 如果您没有访问上下文的权限,或者只是想要一个快速而肮脏的解

使用Velocity模板语言(VTL),我希望获得数组的最大值。我在ApacheVelocity的文档中查找了很长一段时间,但找不到一种方法来实现这一点

以下是我的示例阵列:

#set($array = [2,4,12,3,1,4,34,8])
$sorter.sort($array)

在本例中,我希望得到
34

如果只需要最大值,那么对数组进行排序就有点过分了

如果您可以访问Velocity上下文,那么最好的选择是让Java工具为您完成

如果您没有访问上下文的权限,或者只是想要一个快速而肮脏的解决方案,您可以执行以下操作:

#set($max = -10000)
#foreach($val in $array)
  #set($max = $math.max($max,$val))
#end
#set($max = -10000)
#foreach($val in $array)
  #if($val > $max)
    #set($max = $math.max($max,$val))
  #end
#end
这需要
org.apache.velocity.tools.generic.MathTool
出现在上下文中。如果情况并非如此,您仍然可以简单地执行以下操作:

#set($max = -10000)
#foreach($val in $array)
  #set($max = $math.max($max,$val))
#end
#set($max = -10000)
#foreach($val in $array)
  #if($val > $max)
    #set($max = $math.max($max,$val))
  #end
#end

谢谢你,克劳德。幸运的是,数学工具在我的上下文中可用。感谢您提供更专业的解决方案:)不客气。作为一个侧节点,作为Velocity的维护者之一,我适时地注意到,拥有MathTool.max(Collection)方法是很酷的。。。