对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

集合选择

选择是一项强大的表达式语言功能,它允许您通过从其条目中进行选择,将源集合转换为另一个集合。spring-doc.cadn.net.cn

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

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.Iterablejava.util.Map的对象均支持选择操作。针对数组或Iterable,选择表达式会对每个独立元素进行求值;针对映射,选择表达式会对每个映射条目(Java类型为Map.Entry的对象)进行求值。每个映射条目都有可通过属性访问的keyvalue,这些属性可在选择操作中使用。spring-doc.cadn.net.cn

假设变量 #map 中存储的值为 Map,以下表达式将返回一个新映射(map),该映射包含原映射中所有条目值小于 27 的元素:spring-doc.cadn.net.cn

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

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