2011-02-07 4 views
6
val m: java.util.Map[String, Int] = ... 
m.foreach { entry => 
    val (key, value) = entry 
    // do stuff with key and value 
} 

Map.Entry를 더 잘 분해 할 수있는 방법이 있습니까? 나는 다음을 시도하지만, 컴파일되지 않습니다 : 내가 좋아하는,"Destructuring"스칼라 클로저의 Map.Entry

for((key, value) <- m) println(key, value) 

을하지만 m.foreach을 수행 할 가정 : 당신이 이해하기위한 작업을 수행하고자하는 경우

m.foreach { (key, value) => 
    // do stuff with key and value 
} 
+3

import scala.collection.JavaConverters._ import com.fasterxml.jackson.core.JsonFactory import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.node.{JsonNodeFactory, MissingNode, ObjectNode} val jf = new JsonFactory(true) val o = new ObjectNode(jf) o.put("yellow","banana") for (v <- o.fields.asScala) { println(v.getKey(),v.getValue()) } 

이 출력합니다. 당신은'java.util.Map'을 암시 적으로 스칼라 맵으로 변환했습니다. 그리고 그것을 반복 할 때 실제로'Tuple2'를 보게됩니다. –

답변

20

, 내가 좋아하는

m.foreach{ case (key, value) => println(key, value) } 
+0

당신이 준'foreach' 예제는 java.util.Map (범위가'scala.collection.JavaConversions._')에도 잘 작동합니다. – Ralph

1

이 관련 질문에 대한 답 : 스칼라 반복자에 (java.util.Map.Entry 이상이 경우) 자바 반복자를 변환하는 방법에 대해 설명합니다. 당신은`Map.Entry`을 destructuring하지 않을

(yellow,"banana") 
관련 문제