данный объект:Scala collectons фильтровать и сортировать последовательность с объектами, содержащими карту, а затем итерацию над ней
case class GT(code: String,names: Map[String, Option[String]]) {}
и
список:
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"))))
Я хочу итерацию над списком gText, но зависит от ключа «имена» карты и в порядке убывания длины каждого значения карты «имена».
Первая итерация должна быть в следующем Одер со значениями для «де»:
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")
Вторая итерация должна быть в следующем Одер со значениями для «ан»:
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")
Третья итерация должна быть следующей: со следующими значениями для «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")
Последнее чество для names.key="es"
code="Switch"
& names.key="es"
и names.value = Some("abc")
Как уже упоминалось выше, основной целью является итерации значения для одной и той же тональности различные GT-х зависит от длины каждого значения.
Как это сделать. Может быть, прежде всего, мне нужно собрать ключ в дополнительном наборе, а затем отфильтровать и sortyBy. Пожалуйста, любые предложения приветствуются.
Заранее благодарен. Ugur
«Как это сделать на одной итерации». - но ваш пример дает четыре итерации. Поэтому я не уверен, что вы спрашиваете. Известно ли количество и значения кодов стран заранее? –
Вам не нужно использовать 'new' с классами классов –
thx. Одна итерация невозможна. Я хотел знать, как выполнять итерацию только значений одного ключа, отсортированного по длине. – ugurkocak1980