2016-08-24 4 views
-2

Допустим, у меня есть массив Maps:Итерация Массив Карты в Scala

val m1 = Map("key" -> Array("aa","bb"), "v1" -> 1 , "v2" -> 3) 
    val m2 = Map("key" -> Array("cc","bb"), "v1" -> 2 , "v2" -> 4) 
    val colection = Array(m1,m2) 

Я хотел бы создать новую коллекцию val colection2 если значение v2 из collection составляет менее 4. Результат новая коллекция который содержит m1 только.

Я попытался foreach и filter, но я не могу получить к Хороший доступ значению v2 , например: val collection2 = collection.filter{case (key,v1,v2) => (v2 < 4) }

+2

Что должно приводить к получению справочной как? Как 'коллекция' отличается от' collection2', я не получаю ее из вашего сообщения? – sebszyller

+1

Тебе лучше начать! SO - это не сайт, на котором вы публикуете требования и надеетесь на какой-то бесплатный код (хотя судя по количеству репутации у вас есть, вы должны это знать), поэтому, пожалуйста, добавьте к вопросу подробности о том, что вы пробовали, и о том, что ваша конкретная проблема является. – SamTebbs33

+0

проверить, содержит ли карта ключ 'v2', а затем проверить, соответствует ли значение, сопоставленное с' v2' вашим условием –

ответ

-1

Мой ответ после некоторой работы по вопросу:

val collection2 = for (m <- collection if m("v2").asInstanceOf[Int] < 4) yield m 
+0

Что случилось с ответом? – Toren

Смежные вопросы