java - 为什么 Java Collections API 不包含图形实现?

标签 java api collections graph

我目前正在学习 Java Collections API 并且觉得我对基础知识有很好的理解,但我一直不明白为什么这个标准 API 不包含图形实现。三个基类(List、Set 和 Map)很容易理解,它们在 API 中的所有实现都非常简单和一致。

考虑到图形作为给定问题建模的潜在方法出现的频率,这对我来说没有意义(它可能确实存在于 API 中,当然我没有在正确的地方寻找) . Steve Yegge 在他的一篇博文中建议,程序员在解决问题时应该首先考虑图,如果问题域不适合这种数据结构,那么才考虑替代结构。

我的第一个猜测是没有通用的方式来表示图形,或者它们的接口(interface)可能不够通用,以至于 API 实现无法发挥作用?但是如果你把一个图分解成它的基本组成部分(顶点和一组连接部分或所有顶点的边)并考虑通常构建图的方式(像 addVertex(v) 和 insertEdge(v1, v2) 这样的方法) ) 似乎通用的 Graph 实现是可能且有用的。

感谢您帮助我更好地理解这一点。

最佳答案

请注意,集合框架中包含一些特殊图形,特别是链表和树。

这也指出了为什么不存在通用图形实现的一个可能原因:由于图形可以有如此多不同的形式和风格,具有截然不同的特征,通用图形可能不会非常有用。

此外,至少在我目前的实践中,大多数时候我没有感觉到需要图表。有些领域确实需要它们,但许多领域根本不需要。 (到目前为止,在我参与的各个领域的十多个项目中,我列举了两个实际上需要图形的项目。)所以我想一般来说,Java 社区并没有太大的压力让集合中有一个图形框架。它只包含“几乎每个人”“几乎总是”需要的基本内容。它的优势之一确实是(相对)简单和清晰,我相信,它的设计师将其视为需要保留的 Assets 。

关于java - 为什么 Java Collections API 不包含图形实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2982408/

相关文章:

Java 读取带有补充 unicode 字符的字符流

java.sql.SQLException:索引::1 处缺少 IN 或 OUT 参数。我该如何修复这个异常?

azure - 将旧的 azure 函数 API 迁移到新的 azure 函数而不更改 url

android - 从 MVC Web 应用程序链接到 Apple Wallet 或 Android Pay

c# - 在不调用外部 api 的情况下在 rest web API 的 Controller 内部查找客户端公共(public) IP 地址

具有类型安全访问器的 Scala 数据结构

Java 使用正则表达式来匹配测验的模式

java - 未处理的事件循环异常超出 GC 开销限制

java - java.util.Map 的通用测试工具?

java - 为什么这些继承类型被用作参数化类型不兼容类型?