【问题标题】:How to implement graph in core java?如何在核心java中实现图形?
【发布时间】:2011-10-22 12:01:44
【问题描述】:

我有一个有向未加权图。给出了节点数和节点之间的所有链接。我试图用向量数组来完成这项任务,但 java 不支持它。 ArrayList 和 Vectors 支持随机访问迭代器,但由于我是新手,所以无法在 java 中实现。我不想为此使用二维矩阵。我想将它实现为 N 个给定节点的数组,其中每个节点都有一个连接到它的节点的列表。请有人提供伪代码或任何可以帮助我的东西。例如,一个图表被给出为

5
3 4
4 2
1 5
4 3
1 3
2 5

这里给出了编号为 1 到 5 的 5 个节点。以下是从第一个节点到第二个节点的有向边。我想将其表示为图形的邻接列表。谁能给出它的实现?

【问题讨论】:

  • 您可能希望查看本页右下角列中列出的stackoverflow 上的相关内容。此外,如果您因对 Java 库(例如 Collections 库(ArrayLists、Vectors...)等)缺乏了解而受阻,请务必使用 Google 获取一些教程,以便您可以使用这些有用的工具。此外,相关内容链接将告诉您专门为图形创建和操作而构建的第 3 方库。
  • 我已经在谷歌和这个网站上搜索过这个,但我找不到。最后我要问我自己的问题。我也不想使用 3rd 方库。
  • 同样,相关内容将对您有用,即使只是为了让您知道如何开始以及您需要获得哪些知识库。即使你仍然无法弄清楚作业,这些信息至少会帮助你写出一个更有知识和更具体的问题。

标签: java graph


【解决方案1】:

adjacency listMap<Node, List<Node>>List<List<Node>> 可能是合适的。

附录:在使用JavaCollections时,注意MapList是提供特征方法的interfaces可能会有所帮助,而您可能需要根据需要选择特定的implementations您想使用您的数据结构实现的算法。

附录:有一个相关的例子here

【讨论】:

  • 是的,我尝试使用带有 arraylist 的邻接列表来执行此操作,但无法使用迭代器在其中插入值。
  • 啊,您需要编辑您的问题以包含一个 sscce 来展示您所描述的问题。
  • 我已经链接到上面的示例。
【解决方案2】:

您可以根据自己的目的使用许多集合数据结构,尤其是哈希表或集合。 Java 为您提供了许多集合通用容器(HashMap-s、ArrayList-s 等)。我不是 Java 专家,但搜索 Java Collections 会得到很多结果,例如this tutorial

【讨论】:

    【解决方案3】:

    太糟糕了,您要求实现有向未加权图而不是直接使用。否则,我会建议你使用一个现成的框架来处理几乎任何与网络/图相关的东西,称为 JUNG2。您可以在 GUI 或非 GUI 模式下使用它。它将为您节省大量修补时间。以下是它的教程链接:

    http://www.grotto-networking.com/JUNG/JUNG2-Tutorial.pdf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2011-05-13
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      相关资源
      最近更新 更多