java - 使用 jgrapht 自定义边缘

标签 java jgrapht

我想定义一条自定义边

public class Connection extends DefaultWeightedEdge

但是当我尝试使用 super() 时,这可能吗?创建图形时我应该为 EdgeFactory 使用什么?

new SimpleWeightedGraph<Sensor, Connection>(EdgeFactory.class);

这就足够了吗?还是我应该创建一个扩展 EdgeFactory 的新类?

最佳答案

您不需要子类化 DefaultWeightedEdge 来创建您的自定义边,以下也适用。我目前使用的是 JGraphT 的 0.9.0 版。

类定义:

public class Connection {
    // class implementation
    // define all constructors and methods you need
}

图形创建:

SimpleWeightedGraph<Sensor, Connection> graph;
graph = new SimpleWeightedGraph<Sensor, Connection>(Connection.class);

添加自定义边和设置权重:

Sensor v1 = // sensor instance
Sensor v2 = // another sensor instance
graph.addVertex(v1);
graph.addVertex(v2);

Connection connection = new Connection(/* ... */);
graph.addEdge(v1, v2, connection);
graph.setEdgeWeight(connection, 10.0);

还要考虑实现 Connection 类的 equalshashCode 方法,因为 JGraphT 从 0.8.4 版本开始就依赖这些方法,请参阅EqualsAndHashCode文章。本文还提供了一个示例,其中 DefaultWeightedEdge 被子类化。

关于java - 使用 jgrapht 自定义边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24384223/

相关文章:

java - 在什么情况下 Spring 调用 Lifecycle 的启动/停止 Hook ?

java - JGraphT - 最大独立集

Java - 如何扫描 token 并检查该 token 是否存在且是否为 double

javascript - WebApp 将静态 HTML/JS 文件放在 WAR 中还是单独的 Web 服务器中?

java - 我正在制作一个刽子手项目,我想知道如何在完成所有尝试后让游戏停止?

java - 使用 jgrapht 创建带有簇的图

java - 在 JGraphT SimpleGraph 中使用相等的顶点

java - 如何将jgrapht简单图序列化为json?

java - j图 : General Traversal & Forest Traversal

java - 以 dB 表示音乐音频样本?