如何在FreeMarker中总计一个数字列表

时间:2016-05-22 20:18:06

标签: java freemarker

我已经浏览了documentation for FreeMarker,但我无法找到如何总结列表中的值列表的示例。

所以,让我说我有以下课程,如何在最后添加一行以包含值的总和:

public class MyObject
{
    List<long> values
}

然后,我可以查看各个项目as explained in the list directive

<#list MyObject.values as value>
  ${value}
</#list>

我甚至可以找到documentation on how to do arithmetic on the individual values,但我怎么能添加一个新行来显示所有值的总和?换句话说,我找不到任何关于如何汇总数字列表的文档......

还可以请在说明如何执行此操作的文档中包含指向该页面的链接。感谢。

2 个答案:

答案 0 :(得分:1)

这是一个自定义功能。我只是使用函数来平均一个数字列表并略微改变它。

<#function mysum nums...>
  <#local sum = 0>
  <#list nums as num>
    <#local sum += num>
  </#list>
  <#if nums?size != 0>
    <#return sum>
  </#if>
</#function>
${mysum(10, 20)}
30

这是我获得平均列表的原始函数的地方: http://freemarker.org/docs/ref_directive_function.html(参见示例2)

答案 1 :(得分:1)

如果您正在使用Java 8,则有内置函数可用于查找this的总和。如果您将this转换为List<Long>List,则可以使用.sum()

Stream

例如,您可以在this question中看到这一点。