given an object:
case class GT(code: String,names: Map[String, Option[String]]) {}
and
a list :
val gText = List(new GT("USB", Map("de" -> Some("a"), "en" -> Some("abc"), "fr" -> Some("ab"))),
new GT("Switch", Map("de" -> Some("abcdef"), "en" -> Some("b"), "fr" ->
Some("abc"), "es" -> Some("abc"))),
new GT("PVC", Map("de" -> Some("abc"), "en" -> Some("bc"), "fr" -> Some("abcd"))))
I want to iterate over the gText List but dependent from the key of map "names" and in descending order of the length of each "names" map value.
First iteration should be in the following oder with the values for "de":
1. code: "Switch" & names.key="de" & names.value = Some("abcdef")
2. code: "PVC" & names.key="de" & names.value = Some("abc")
3. code: "USB" & names.key="de" & names.value = Some("a")
Second iteration should be in the following oder with the values for "en":
1. code: "USB" & names.key="en" & names.value = Some("abc")
2. code: "PVC" & names.key="en" & names.value = Some("bc")
3. code: "Switch" & names.key="en" & names.value = Some("b")
Third iteration should be in the following oder with the values for "fr":
1. code: "PCV" & names.key="fr" & names.value = Some("abcd")
2. code: "Switch" & names.key="fr" & names.value = Some("abc")
3. code: "Switch" & names.key="fr" & names.value = Some("ab")
Last iteration is for names.key="es"
code="Switch"
& names.key="es"
and names.value = Some("abc")
As mentioned above the main goal is to iterate the values for the same key of the different GT's dependent from the length of each value.
How can I do that. Maybe first of all I have to collect the key in an additional set and then filter and sortyBy. Please any suggestions are welcome.
Thanks in advance. Ugur