You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:32:32