Список ключей от asMaps в Scala - PullRequest
       26

Список ключей от asMaps в Scala

0 голосов
/ 04 октября 2018

У меня есть это:

val asMaps = data.asMaps(classOf[String], classOf[String])

содержит много карт, подобных этой.

{Source_Field=nameSource, Target_Field=nameTarget}
{Source_Field=lastSource, Target_Field=lastTarget}

Я пытаюсь напечатать каждый Ключ, для этого я делаю:

for (i <- 0 to asMaps.size()-1) 
{
       println ("map = "  +  asMaps.get(i))

      asMaps.get(i).keySet().forEach{case(k) => println(k)}
}

но не работает, я уже посмотрел и нашел много вещей, но у меня ничего не работает, спасибо за вашу помощь

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Этого должно быть достаточно:

asMaps.foreach(m => m.keySet.foreach(k => println(k)))
0 голосов
/ 04 октября 2018

спасибо "Gabor Bakos" за вашу помощь. Проблема решена, в моем случае мне нужно было добавить:

val iteratorKey = JavaConversions.asScalaIterator[String](asMaps.get(i).keySet().iterator())

      for (key <- iteratorKey)
      {
        println ("key   : " + key )
        println ("value : " + asMaps.get(i).get(key) )
      }
0 голосов
/ 04 октября 2018

Должно работать следующее:

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))
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...