深色模式
集合工具(Sets)
#sets:是专门用于处理 java.util.Set(集合)的工具方法集合:
java
/*
* ======================================================================
* 请查阅 org.thymeleaf.expression.Sets 类的 Javadoc API 文档
* ======================================================================
*/
/*
* 将任意对象转换为 Set 集合
*/
${#sets.toSet(object)}
/*
* 计算 Set 集合的大小(即元素数量)
*/
${#sets.size(set)}
/*
* 检查 Set 集合是否为空(无任何元素)
*/
${#sets.isEmpty(set)}
/*
* 检查 Set 集合中是否包含指定的单个元素,或所有指定元素
*/
${#sets.contains(set, element)}
${#sets.containsAll(set, elements)}补充说明(贴合 Thymeleaf 集合操作技术语境)
1. 核心术语解析
| 英文术语 | 译法/说明 |
|---|---|
| Sets | Set 工具类(Thymeleaf 表达式工具,#sets 是其在模板中的简写,专用于操作 Java Set 集合) |
| toSet | 转换为 Set 集合(支持将数组、List、单个对象等任意类型转为 Set,单个对象会被封装为仅含该元素的 Set) |
| size | 大小(返回 Set 中元素的数量,对应 Java 中 Set.size() 方法) |
| isEmpty | 是否为空(返回布尔值,Set 无元素时为 true,对应 Java 中 Set.isEmpty() 方法) |
| contains/containsAll | 包含指定元素/包含所有指定元素(elements 为集合/数组类型,需所有元素都存在才返回 true) |
2. 关键逻辑解读(实战示例)
假设模板中有变量 nums = [1,2,3,2](List 类型)、singleNum = 5(单个数值),核心用法如下:
html
<!-- 1. 转换为 Set(自动去重) -->
<div th:with="numSet=${#sets.toSet(nums)}">
转换后的 Set 元素:<span th:text="${numSet}"></span> <!-- 输出 [1,2,3] -->
</div>
<div th:with="singleSet=${#sets.toSet(singleNum)}">
单个对象转 Set:<span th:text="${singleSet}"></span> <!-- 输出 [5] -->
</div>
<!-- 2. 获取 Set 大小 -->
<div th:with="numSet=${#sets.toSet(nums)}">
Set 元素数量:<span th:text="${#sets.size(numSet)}"></span> <!-- 输出 3 -->
</div>
<!-- 3. 检查 Set 是否为空 -->
<div th:if="${#sets.isEmpty(numSet)}">Set 为空</div> <!-- 不显示,因 numSet 非空 -->
<!-- 4. 检查是否包含指定元素 -->
<div th:if="${#sets.contains(numSet, 2)}">包含元素 2</div> <!-- 显示 -->
<!-- 5. 检查是否包含所有指定元素(elements 为集合/数组) -->
<div th:with="checkElements=${{1,3}}"
th:if="${#sets.containsAll(numSet, checkElements)}">包含 1 和 3 所有元素</div> <!-- 显示 -->- 核心特性:
toSet转换时会自动去重(符合 Set 集合“元素唯一”的特性);若传入 null,会返回空 Set 而非 null。 - 注意点:
containsAll的第二个参数需为集合/数组类型(如 List、数组),传入单个值会触发运行时异常。
3. 句式优化说明
- 补充括号注释(如“即元素数量”“无任何元素”),明确
size/isEmpty的实际含义,贴合新手理解; - 将原文“Check if element or elements are contained in set”拆分为“检查 Set 集合中是否包含指定的单个元素,或所有指定元素”,用“单个/所有”区分
contains和containsAll的差异,避免歧义; - 保留
${#sets.xxx}表达式原样,符合 Thymeleaf 模板语法规范,注释简洁且突出核心功能。
总结
#sets核心作用:在 Thymeleaf 模板中便捷操作 Set 集合,支持类型转换、大小计算、元素存在性检查;- 核心用法分类:
- 类型转换:
toSet(object)(任意对象转 Set,自动去重,null 转空 Set); - 基础属性:
size(set)(获取元素数量)、isEmpty(set)(判断是否为空); - 存在性检查:
contains(set, element)(单元素)、containsAll(set, elements)(多元素);
- 类型转换:
- 关键注意点:
containsAll的第二个参数必须是集合/数组类型,且toSet转换会自动去重(Set 核心特性)。
