コレクションの選択

選択は、エントリから選択することでソースコレクションを別のコレクションに変換できる強力な式言語機能です。

選択には .?[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 式言語は、コレクション選択のための安全なナビゲーションもサポートしています。

詳細は安全なコレクションの選択と射影を参照してください。