0

我有两个HashSet,他们装着不同的值

var vertexes = new HashSet[String]()
var edges = new HashSet[RDFTriple]() //RDFTriple is a class

然后把他们装到一个Map里面,那value的泛型只能写成_

var graph = Map[String, HashSet[_]]()
graph.put("e", edges)
graph.put("v", vertexes)

现在我要从Map里把他们分别取出来可是失败了,我尝试过模式匹配

val a = graph.get("v")
a match {    
  case _ => val v = a 
}
val b = graph.get("e")
b match {
  case _ => val e = b
}

但是v和e会被识别为Option[HashSet[_]],而不是我想要的HashSet[String]HashSet[RDFTriple].

我应该怎么做才能实现这样的需求?
这个问题困扰我很久了希望大牛们帮帮我,谢谢。

1个回答

0

你为什么不定义一个包装类呢?

case class Demo(vertexes: Set[String], edges: Set[RDFTriple])

如果你真的想这么去取数据

var graph = Map[String, HashSet[_]]()

你可以这么改改

var graph = Map[String, HashSet[Object]]()

取的时候再转回来,不过这样比较丑,不太建议这么做

撰写答案