集合選擇
集合選擇是一個強大的表示式語言特性,它允許你透過從其條目中進行選擇來將源集合轉換為另一個集合。
集合選擇使用 .?[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
,選擇表示式針對每個獨立元素進行求值。對於 Map,選擇表示式針對每個 Map 條目(Java 型別 Map.Entry
的物件)進行求值。每個 Map 條目都有其 key
和 value
作為屬性可用於選擇表示式。
給定一個儲存在名為 #map
的變數中的 Map
,以下表達式返回一個新的 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 表示式語言也支援集合選擇的安全導航。 詳情請參閱 安全集合選擇和投影。 |