集合选择
选择是一种强大的表达式语言特性,它允许您通过从其条目中进行选择,将源集合转换为另一个集合。
选择使用.?[selectionExpression]
的语法。它过滤集合并返回一个包含原始元素子集的新集合。例如,选择让我们轻松地获取塞尔维亚发明家的列表,如下例所示:
-
Java
-
Kotlin
List<Inventor> list = (List<Inventor>) parser.parseExpression(
"members.?[nationality == 'Serbian']").getValue(societyContext);
val list = parser.parseExpression(
"members.?[nationality == 'Serbian']").getValue(societyContext) as List<Inventor>
选择支持数组和任何实现java.lang.Iterable
或java.util.Map
的内容。对于数组或Iterable
,选择表达式针对每个单独元素进行评估。对于映射,选择表达式针对每个映射条目(Java类型Map.Entry
的对象)进行评估。每个映射条目都可以作为属性访问其key
和value
以供选择使用。
给定存储在名为#map
的变量中的Map
,以下表达式返回一个新的映射,其中包含原始映射中值小于27的元素:
-
Java
-
Kotlin
Map newMap = parser.parseExpression("#map.?[value < 27]").getValue(Map.class);
val newMap = parser.parseExpression("#map.?[value < 27]").getValue() as Map
除了返回所有选定的元素外,您还可以仅检索第一个或最后一个元素。要获取与选择表达式匹配的第一个元素,语法为.^[selectionExpression]
。要获取与选择表达式匹配的最后一个元素,语法为.$[selectionExpression]
。
Spring表达式语言还支持集合选择的安全导航。 有关详细信息,请参阅安全集合选择和投影。 |