我正在使用Gremlin遍历GraphTraversal
对象并检索顶点。
这就是我正在使用的东西:
def getVertexSet(vIter: GraphTraversal[Vertex, Vertex]): Set[Vertex] = {
val s = mutable.HashSet.empty[Vertex]
vIter.forEachRemaining(v => s.add(v))
s.toSet
}
我希望能够做到这一点,而无需将可变集合转换为不可变集合。我不知道使用迭代器是否可行。 Scala做到这一点的方法可能是使用尾部递归,但是我不确定这样做有什么性能上的好处,到那时,无论如何,最后一次将单次转换为不可变都可能更具可读性。
此外,如果有更好的方法可以从遍历中收集所有顶点,那么我也愿意进行这种优化。
答案 0 :(得分:3)
如果可以使用Scala的Set
而不是Java,请继续:
import collection.JavaConverters._
def getVertexSet(vIter: GraphTraversal[Vertex, Vertex]): Set[Vertex] = {
vIter.asInstanceOf[java.util.Iterator[Vertex]].asScala.toSet
}
如果您确实需要Java .asJava
,则以后仍然可以在Set[Vertex]
上致电Set
。