最常用的迭代方式和添加到集合的功能



我使用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实现这一点的方法可能是使用尾部递归,但我不确定这是否有任何性能优势,而且在这一点上,最后一次转换为不可变可能更可读。

此外,如果有更好的方法从遍历中收集所有顶点,我也对这种优化持开放态度。

如果您可以使用Scala的Set而不是Java的,请使用:

import collection.JavaConverters._
def getVertexSet(vIter: GraphTraversal[Vertex, Vertex]): Set[Vertex] = {
vIter.asInstanceOf[java.util.Iterator[Vertex]].asScala.toSet
}

试试看!

如果您确实需要一个JavaSet,您以后仍然可以在Set[Vertex]上调用.asJava

最新更新