跳到主要内容
版本:7.0.3

集合选择

Hunyuan 7b 中英对照 Collection Selection

选择(Selection)是一种强大的表达式语言特性,它允许你通过从源集合(source collection)中选取元素来将其转换成另一个集合。

选择操作使用的语法是.?[selectionExpression]。它过滤集合并返回一个新的集合,该新集合包含原始元素的一个子集。例如,如以下示例所示,选择操作可以让我们轻松地获取一份塞尔维亚发明家的名单:

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

数组以及实现java.lang ITERablejava.util.Map的任何对象都支持选择操作。对于数组或Iterable,选择表达式会针对每个单独的元素进行求值;而对于映射(map),选择表达式则会针对每个映射条目(即Map.Entry类型的对象)进行求值。每个映射条目的keyvalue都可以作为属性被访问,以便在选择操作中使用。

给定一个存储在名为#map的变量中的Map,以下表达式返回一个新的映射,该新映射包含原始映射中键值对的值小于27的那些元素:

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

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

备注

Spring表达式语言还支持对集合进行安全的导航选择。
有关详细信息,请参阅安全的集合选择与投影