コレクションの選択
選択は、エントリから選択することでソースコレクションを別のコレクションに変換できる強力な式言語機能です。
選択には .?[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 式言語は、コレクション選択のための安全なナビゲーションもサポートしています。 詳細は安全なコレクションの選択と射影を参照してください。 |