集合選取
選取是強大的運算式語言功能,可讓您通過從來源集合中選取條目,將來源集合轉換為另一個集合。
選取使用 .?[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 運算式語言也支援集合選取的安全導航。 請參閱 安全集合選取和投影 以取得詳細資訊。 |