如何在 FreeMarker 中汇总数字列表
How to total a list of numbers in FreeMarker
我一直在浏览 documentation for FreeMarker,但找不到任何有关如何对列表中的值列表求和的示例。
假设我有以下 class,如何在末尾添加一行以包括值的总和:
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 但我怎样才能添加一个新行来显示所有值的总和?换句话说,我找不到任何关于如何对数字列表求和的文档...
您还可以将 link 添加到文档中解释如何执行此操作的页面中吗?谢谢。
这是一个自定义函数。我只是用这个函数来平均一个数字列表并稍微改变它。
<#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)
如果您使用的是 Java 8,则有内置函数可以计算 List<Long>
的总和。如果将 List
转换为 Stream
再转换为 LongStream
,则可以使用 .sum()
:
${MyObject.values.stream().mapToLong(Long::longValue).sum()}
例如,您可以在 this question 中看到这一点。
我一直在浏览 documentation for FreeMarker,但找不到任何有关如何对列表中的值列表求和的示例。
假设我有以下 class,如何在末尾添加一行以包括值的总和:
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 但我怎样才能添加一个新行来显示所有值的总和?换句话说,我找不到任何关于如何对数字列表求和的文档...
您还可以将 link 添加到文档中解释如何执行此操作的页面中吗?谢谢。
这是一个自定义函数。我只是用这个函数来平均一个数字列表并稍微改变它。
<#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)
如果您使用的是 Java 8,则有内置函数可以计算 List<Long>
的总和。如果将 List
转换为 Stream
再转换为 LongStream
,则可以使用 .sum()
:
${MyObject.values.stream().mapToLong(Long::longValue).sum()}
例如,您可以在 this question 中看到这一点。