跳到主要内容

集合选择

DeepSeek V3 中英对照 Collection Selection

选择是一种强大的表达式语言特性,它允许你通过从源集合的条目中进行选择,将其转换为另一个集合。

选择使用 .?[selectionExpression] 语法。它过滤集合并返回一个包含原始元素子集的新集合。例如,选择让我们能够轻松获取塞尔维亚发明家的列表,如下例所示:

List<Inventor> list = (List<Inventor>) parser.parseExpression(
"members.?[nationality == 'Serbian']").getValue(societyContext);
java

选择功能支持数组以及任何实现了 java.lang.Iterablejava.util.Map 的对象。对于数组或 Iterable,选择表达式会针对每个单独的元素进行评估。对于映射(Map),选择表达式会针对每个映射条目(Java 类型为 Map.Entry 的对象)进行评估。每个映射条目都有其 keyvalue 作为属性,可以在选择表达式中使用。

给定一个存储在变量 #map 中的 Map,以下表达式返回一个新 Map,该 Map 由原始 Map 中值小于 27 的元素组成:

Map newMap = parser.parseExpression("#map.?[value < 27]").getValue(Map.class);
java

除了返回所有选中的元素外,你还可以只检索第一个或最后一个元素。要获取与选择表达式匹配的第一个元素,语法为 .^[selectionExpression]。要获取与选择表达式匹配的最后一个元素,语法为 .$[selectionExpression]

备注

Spring 表达式语言还支持集合选择的安全导航。

详情请参阅 安全集合选择与投影