gpt4 book ai didi

java - 为什么 Java Collections API 没有 Tree 实现

转载 作者:IT老高 更新时间:2023-10-28 20:59:35 25 4
gpt4 key购买 nike

只是出于好奇,我最近不得不为我的一个程序使用一棵树,我必须自己构建一棵二叉树,但是为什么 Collections API 没有树的默认实现(甚至二叉树)?

我认为他们决定不将其包含在集合 API 中应该有一些充分的理由。

最佳答案

I think there should be some strong reason why they decided not to include it in collections API.

我认为原因是没有人想出一个很好的树木 API

  • 通用性足以涵盖广泛的用例,并且
  • 足够有用,可以补偿通用的性能开销。

(你在哪里停下来?树?二叉树?N叉树?DAG?图?)

值得注意的是,Apache Commons Collections 或 Google Collections(又名 Guava)都没有树 API。然而,关于这个主题有一个活跃的 Guava 问题 - http://code.google.com/p/guava-libraries/issues/detail?id=174 - 很明显,至少有部分人同意你的观点。

更新

从 15.0 版开始,Guava 现在以 TreeTraverserBinaryTreeTraverser 类的形式支持树。但这可能不是您所期望的。事实上,这些类实际上并没有实现树数据结构。相反,您必须在泛型类型参数中执行此操作。此外,Traverser 类甚至避免对节点类型的 API 做出假设。它们通过作为抽象类来做到这一点,并且需要具体的遍历器子类型来实现询问树的操作;例如获取节点的子节点。


FWIW、TreeMapTreeSet 不是“树 API”。它们是 MapSet API 的基于树的实现。树性完全被公共(public) API 隐藏,使得这两个类完全不适合用作通用树。

关于java - 为什么 Java Collections API 没有 Tree 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8641883/

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