gpt4 book ai didi

java - Java中无向图的边

转载 作者:行者123 更新时间:2023-12-01 08:15:15 24 4
gpt4 key购买 nike

假设我正在编写一个 Java 类来表示无向图的边。此类Edge 包含两个顶点tofrom

class Edge<Vertex> {  private final Vertex to, from  public Edge(Vertex to, Vertex from) {    this.to = to;    this.from = from;  }   ... // getters, equals, hashCode ...} 

显然,e1 = new Edge(v1, v2)e2 = new Edge(v2, v1) 在无向图中实际上是相同的。是否有意义?您将如何实现类 Edge 来满足该要求?

最佳答案

根据某些唯一标识符对构造函数中的顶点执行排序。这样,无论顺序如何,它们都会一致存储。

我发现这比 noMAD 的解决方案更好,因为与这些对象交互的所有代码都会以相同的方式对待它们,而不仅仅是您的 equals 实现。

此外,调用类成员 tofrom 会令人困惑,因为它听起来像一个有向图。我会将它们重命名为更通用的名称,例如 vertex1vertex2

  public Edge(Vertex x, Vertex y) {
if (vertex2.getId() > vertex1.getId()) {
this.vertex1 = x;
this.vertex2 = y;
} else {
this.vertex1 = y;
this.vertex2 = x;
}
}

关于java - Java中无向图的边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13918245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com