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