用于图形/网络数据结构的Java API列表

什么是用于处理图形(边/节点)作为数据结构的优秀Java API?

请在评论中添加对类似SO问题的引用。 请直接在此Wiki条目中编辑列表。 请添加已添加项目的摘要说明作为答案(每个答案一个项目)。

为了我的MS论文,我在网上搜索了很多Java Graph Library。 我建议你使用以下框架:

  1. GraphStream :它有非常简单的API,并且有很多算法。 它提供了许多图形结构(有向,无向,多图,……)和许多可视化工具。
  2. JUNG :这个框架已经存在了一段时间,因此它具有强大且经过良好测试的function。 最新版本发布于2010年,因此语法相当古老。

这两个框架都有许多算法和可视化工具。

如果你关心内存和性能,而你只需要图形数据结构(没有算法,没有可视化),我会建议使用AuroraGraphManager ,这是我实现的图形数据结构,也是我论文的一部分。 我上面提到的框架对我来说并不好,因为我必须处理相当大的图形(高达3亿个边缘)。

希望能帮助到你!

JUNG – Java通用网络/图形框架 – 是一个软件库,它为数据的建模,分析和可视化提供了一种通用和可扩展的语言,可以表示为图形或网络。

JGraphT – JGraphT是一个免费的Java图形库,提供数学图论理论对象和算法。 JGraphT支持各种类型的图形,包括:

  • 有向和无向图。
  • 带有加权/未加权/标记或任何用户定义边的图。
  • 各种边缘多重性选项,包括:简单图形,多图形,伪图形。
  • 不可修改的图形 – 允许模块提供对内部图形的“只读”访问。
  • 可监听的图形 – 允许外部监听器跟踪修改事件。
  • 子图在其他图上自动更新子图视图的图。
  • 上图的所有组成

(需要Java 1.6)

JDSL – JDSL是Java中的数据结构库。 它是实现基本数据结构和算法的Java接口和类的集合,例如:

  • 序列,树,优先级队列,搜索树,哈希表
  • 排序和搜索算法
  • 图遍历,最短路径,最小生成树

(JDSL似乎不支持generics)