2012-06-12 5 views
5

저는 스칼라를 처음 접했습니다. int 키와 문자열 값을 가진 간단한 해시 테이블을 구현하고 싶습니다.스칼라 hashmap 다중 값

import scala.collection.mutable.HashMap 
val test_map = new HashMap[Int, String] 
test_map += 10 -> "prog_1" 
test_map += 20 -> "prog_2" 
test_map += 25 -> "prog_3" 
test_map += 15 -> "prog_4" 
test_map += 10 -> "prog_8" 

test_map의 값 (10) "prog_1는"아니다 그러나 "prog_8는"그냥 "prog_8"입니다 :

나는 다음 코드를 시도했다. 이 해시 맵은 여러 값을 가질 수없는 키 값 함수 일 뿐인 것처럼 보입니다. 스칼라에서 다중 값 해시 테이블을 만드는 간단한 방법이 있습니까?

답변

10

같은 키 값을 삽입 순서를 보존 신경 쓰지 않는 경우가 MultiMap를 사용할 수 있습니다

import scala.collection.mutable.{ HashMap, MultiMap, Set } 

val test = new HashMap[Int, Set[String]] with MultiMap[Int, String] 

test.addBinding(10, "prog_1") 
test.addBinding(20, "prog_2") 
test.addBinding(25, "prog_3") 
test.addBinding(15, "prog_4") 
test.addBinding(10, "prog_8") 
3

는 표준 가변의 HashMap을 가지고 몇 가지 편리한 그것을 향상의 Multimap과의 특성을 사용하여 다중 값 맵 처리 방법

import scala.collection.mutable.HashMap 
import scala.collection.mutable.MultiMap  
import scala.collection.mutable.Set 

val test_map = new HashMap[Int, Set[String]] with MultiMap[Int, String] 
test_map.addBinding(10 ,"prog_1") 
test_map.addBinding(20 ,"prog_2") 
test_map.addBinding(25 ,"prog_3") 
test_map.addBinding(15 ,"prog_4") 
test_map.addBinding(10 ,"prog_8") 
+0

변경 가능한 버전의 'Set'을 가져 오지 않으면 작동하지 않습니다. –

+0

트래비스에 투표하십시오. 그는 50 초 동안 나를 때렸다. –