2012-04-16 3 views
0

Я играл с Scala HashMap, и я заметил два разных представления HashMap. Мне было интересно, если кто-то может объяснить разницу:Различные представления Scala HashMap

Map(123 -> 1) 

и

{123=1} 

Спасибо!

+0

Знаете ли вы 'val m = Map ((123, 1), (456, 2))'? –

ответ

5

Где вы видели: {123=1}? Это не стандартное представление в Scala, но - это способ, которым Java определяет toString для своих карт.

val sm = Map(1->1, 2->2) // Map(1 -> 1, 2 -> 2) 

val jm = new java.util.HashMap[Int,Int]() 
jm.put(1,1) 
jm.put(2,2) 
jm 
// java.util.HashMap[Int,Int] = {1=1, 2=2} 
+2

Извините, я понял. {123 = 1} возникает, когда вы используете java.util.HashMap, а не scala. – Ken

+0

@ Ken, Ах, да, это имеет смысл. – dhg

2

-> - метод, который создает кортежи. Сам по себе он не имеет ничего общего с картами. Так, например, 123 -> 1 возвращает кортеж (123, 1). Вы можете попробовать это в РЕПЛ:

scala> 123 -> 1 
res1: (Int, Int) = (123,1) 

Вы можете создать карту, снабжая кортежей apply метода object Map «s, который является то, что вы делаете, когда вы это делаете:

val m = Map(123 -> 1, 456 -> 2) 

является такой же, как

val m = Map.apply(123 -> 1, 456 -> 2) 

такое же, как

val m = Map.apply((123, 1), (456, 2)) 

который создает Map с двумя входами, один с ключом 123 и значением 1, другой с ключом 456 и значением 2.

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