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

JUNG框架:如何获取多集群中的所有目标Vertex标签

获取集群中所有目标Vertex标签的实现方案

核心需求

获取单个集群及多集群场景下所有目标Vertex的标签,使用径向布局(radial layout),已知getEdgeTargets和getEdgeSource方法,当前代码存在固定循环次数的局限性。

单个集群的实现方式

遍历集群内所有边,通过getEdgeTarget获取目标Vertex后提取标签:

// 单个集群收集所有目标Vertex标签
Set<String> targetVertexLabels = new HashSet<>();
for (Edge edge : cluster.graph.getEdges()) {
    Vertex targetVertex = cluster.graph.getEdgeTarget(edge);
    if (targetVertex != null) {
        targetVertexLabels.add(targetVertex.getNodename());
    }
}

多集群的实现方式

遍历所有集群集合,对每个集群执行单个集群的标签收集逻辑,最终合并结果:

// 多集群收集所有目标Vertex标签
Set<String> allTargetLabels = new HashSet<>();
// 假设clusters是所有集群的集合
for (Cluster cluster : clusters) {
    for (Edge edge : cluster.graph.getEdges()) {
        Vertex targetVertex = cluster.graph.getEdgeTarget(edge);
        if (targetVertex != null) {
            allTargetLabels.add(targetVertex.getNodename());
        }
    }
}

现有代码的优化建议

原代码固定循环100次,无法适配边数量动态变化的场景,替换为遍历集群边集合的方式更合理:

// 优化后的单个集群边数统计逻辑
int nodeCnt = 0;
Vertex lastAddedNode = nodesList.get(nodesList.size() - 1);
for (Edge edge : cluster.graph.getEdges()) {
    Vertex target = cluster.graph.getEdgeTarget(edge);
    if (cluster.graph.containsEdge(lastAddedNode.getNodename(), target.getNodename())) {
        int edgeCount = cluster.graph.getEdge(lastAddedNode.getNodename(), target.getNodename());
        if (edgeCount > nodeCnt) {
            nodeCnt = edgeCount;
        }
    }
}

内容的提问来源于stack exchange,提问作者Doktor_DOOM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:05:09