freemarker list集合去重,实现hashset

匿名 (未验证) 提交于 2019-12-02 23:45:01

在freemarker中没有提供去重的方法,虽然有提供定义hash的方法,如:<#assign myHash = { "name": "mouse", "price": 50 }>,但是不能够动态构建hash。

通常我们会在java代码中进行处理,比如使用set集合、map对象处理。

但是如果一定要在freemarker文件中实现还是可以做到的,如下代码所示:

introspectedTable.allColumns为java传递过来的ArrayList集合。下面进行去重处理
<#list introspectedTable.allColumns as allColumns>         <#list introspectedTable.allColumns as allColumns2>                 <#if allColumns.fullyQualifiedJavaType.fullyQualifiedNameWithoutTypeParameters ==allColumns2.fullyQualifiedJavaType.fullyQualifiedNameWithoutTypeParameters>                     <#if allColumns_index==allColumns2_index>                         import ${allColumns.fullyQualifiedJavaType.fullyQualifiedNameWithoutTypeParameters};                     <#else>                         <#break >                     </#if>                 </#if>         </#list> </#list>

执行结果为:

import java.lang.Integer;
import java.lang.String;

最后显示的就是去重之后的内容,原理:使用值和_index两个一起来实现的。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!