图/网络数据结构的 Java API 列表
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2152143/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
List of Java APIs for graph/network data structures
提问by harschware
What are some good Java APIs for working with graphs (edges/nodes) as data structures?
有哪些好的 Java API 可以将图(边/节点)用作数据结构?
Please add references to similar SO questions in comments to this wiki. Please edit the list in this wiki entry directly. Please add summary description of your added projects as answers (one project per answer).
请在此 wiki 的评论中添加对类似 SO 问题的引用。请直接编辑此 wiki 条目中的列表。请添加您添加的项目的摘要描述作为答案(每个答案一个项目)。
回答by besil
I searched a lot for Java Graph Library in the web for my MS thesis. I suggest you the following frameworks:
我在网上为我的硕士论文搜索了很多 Java Graph Library。我建议你使用以下框架:
- GraphStream: it has very simple API and it's plenty of algorithms. It offers many graph structures (directed, undirected, multigraph, ... ) and many visualisation tools.
- JUNG: this framework has been around for a while, so it has robust and well-tested features. Last release was in 2010, so the syntax is quite a bit old.
- GraphStream:它有非常简单的 API 和大量的算法。它提供了许多图形结构(有向、无向、多图、...)和许多可视化工具。
- JUNG:这个框架已经存在一段时间了,所以它具有强大且经过良好测试的功能。上次发布是在 2010 年,所以语法有点旧。
Both the frameworks have many algorithms and a visualisation tool.
这两个框架都有许多算法和可视化工具。
If you are concerned about memory and performance, and you just need the graph data structure (no algorithms, no visualisation), I would suggest AuroraGraphManager, which is the graph data structure I implemented and part of my thesis. The frameworks I suggested above weren't good for me because I had to deal with quite big graphs (up to 300 million edges).
如果您关心内存和性能,并且您只需要图形数据结构(没有算法,没有可视化),我会建议AuroraGraphManager,这是我实现的图形数据结构,也是我论文的一部分。我上面建议的框架对我来说并不好,因为我必须处理相当大的图(最多 3 亿条边)。
Hope it helps!
希望能帮助到你!
回答by Kaleb Brasee
JGraphT- JGraphT is a free Java graph library that provides mathematical graph-theory objects and algorithms. JGraphT supports various types of graphs including:
JGraphT- JGraphT 是一个免费的 Java 图形库,提供数学图论对象和算法。JGraphT 支持各种类型的图,包括:
- directed and undirected graphs.
- graphs with weighted / unweighted / labeled or any user-defined edges.
- various edge multiplicity options, including: simple-graphs, multigraphs, pseudographs.
- unmodifiable graphs - allow modules to provide "read-only" access to internal graphs.
- listenable graphs - allow external listeners to track modification events.
- subgraphs graphs that are auto-updating subgraph views on other graphs.
- all compositions of above graphs
- 有向图和无向图。
- 带有加权/未加权/标记或任何用户定义边的图。
- 各种边多重性选项,包括:简单图、多重图、伪图。
- 不可修改的图 - 允许模块提供对内部图的“只读”访问。
- 可听图 - 允许外部侦听器跟踪修改事件。
- 自动更新其他图上的子图视图的子图。
- 上图的所有组合
(Requires Java 1.6)
(需要 Java 1.6)
回答by harschware
回答by harschware
JDSL- JDSL is the Data Structures Library in Java. It is a collection of Java interfaces and classes that implement fundamental data structures and algorithms, such as:
JDSL- JDSL 是 Java 中的数据结构库。它是实现基本数据结构和算法的 Java 接口和类的集合,例如:
- sequences, trees, priority queues, search trees, hash tables
- sorting and searching algorithms
- graphs
- graph traversals, shortest path, minimum spanning tree
- 序列、树、优先级队列、搜索树、哈希表
- 排序和搜索算法
- 图表
- 图遍历、最短路径、最小生成树
(JDSL does not appear to support generics)
(JDSL 似乎不支持泛型)

