Как я могу выполнить операцию groupBy для списка классов дел, имеющих классы дел в качестве полей? Например:
case class F1(str1:Option[String],str2:Option[String])
case class F2(int1:Option[Int],int2:Option[Int])
case class Parent(str:F1, int:F2)
Допустим, у меня есть список родительских классов класса, и я должен динамически выполнять groupBy для любого из полей классов подклассов.
val data = List(Parent(F1(Some("abc"), Some("pqr"))), F2(Some(20), Some(30)))
Parent(F1(Some("abc"), Some("xyz"))), F2(Some(20), Some(30)))
Parent(F1(Some("def"), Some("pqr"))), F2(None, Some(30)))
Parent(F1(Some("def"), Some("pqr"))), F2(Some(20), Some(30)))
Parent(F1(None, Some("xyz"))), F2(None, Some(30))))
Я хочу выполнить data.groupBy("str1")
, где «str1» — это имя поля case calss F1, которое будет передаваться динамически.
Если эта операция выполнена успешно, вывод будет таким:
Map(Some("abc") -> List(Parent(F1(Some("abc"), Some("pqr"))), F2(Some(20), Some(30))),
Parent(F1(Some("abc"), Some("xyz"))), F2(Some(20), Some(30)))),
Some("def") -> List(Parent(F1(Some("def"), Some("pqr"))), F2(None, Some(30))),
Parent(F1(Some("def"), Some("pqr"))), F2(Some(20), Some(30)))),
None -> List(Parent(F1(None, Some("xyz"))), F2(None, Some(30)))))