Должно работать следующее:
for (i <- 0 until asMaps.size())
{
println ("map = " + asMaps.get(i))
asMaps.get(i).keySet().forEach(k => println(k))
}
Я предполагаю, что частичная функция ({ case (k) => ...}
) не является единственным абстрактным методом, так как она должна указывать, определена ли она для этого ввода или нет.Замена его на Function1
(k =>...
) заставит его работать как SAM.
Предполагая, что asMaps
действительно возвращает List[Map[String, String]]
(оба являются коллекциями Java), вот доказательство (с Scala 2.12):
val map = new java.util.HashMap[String, String]()
map.put("a", "a")
map.put("b", "b")
val list/*: util.List[util.HashMap[String, String]]*/ = java.util.Arrays.asList(map)
for (i <- 0 until list.size()) {
// both works
list.get(i).keySet.forEach(k => println(k))
list.get(i).keySet.forEach((k: String) => println(k))
}