如何将GraphTraversal转换为Java的String HashSet?
问题解决:GraphTraversal转Set类型不匹配
你的问题出在values()方法的返回类型上:TinkerPop默认的values()返回泛型为Object的遍历,调用toSet()后得到的是Set<Object>,直接赋值给Set<String>就会触发类型转换错误。而.join(',')是用来将遍历结果拼接成单个字符串的,和类型转换完全无关,所以不起作用。
解决方法有两种:
方法一:指定values的返回类型
在调用values()时明确指定类型为String,这样遍历的泛型会直接变成String,后续toSet()就能得到Set<String>:GraphTraversal<Vertex, String> nodeTraversal = this.central.V().has(nodeid).in("node").values(String.class, nodeId); Set<String> idSet = nodeTraversal.toSet();方法二:用map转换类型
如果无法直接指定values()的类型,通过map()操作将每个元素转换为String类型:GraphTraversal<Vertex, String> nodeTraversal = this.central.V().has(nodeid).in("node").values(nodeId) .map(t -> t.get().toString()); Set<String> idSet = nodeTraversal.toSet(); // 也可以用TinkerPop内置的字符串转换工具 // .map(Values.stringValue())
内容的提问来源于stack exchange,提问作者e_wards
相关产品推荐
相关产品推荐

