我知道这里有人问过这个问题:Java tree data-structure?
但是在 Java 中实现树的最佳实践是什么?上面链接的问题中投票第二多的答案提到了 TreeModel,但在评论中有人说这样做不是好的编码习惯。这有任何道理吗?(我不明白摇摆与非摇摆)使用 TreeModel 是常见的做法吗?
我知道这里有人问过这个问题:Java tree data-structure?
但是在 Java 中实现树的最佳实践是什么?上面链接的问题中投票第二多的答案提到了 TreeModel,但在评论中有人说这样做不是好的编码习惯。这有任何道理吗?(我不明白摇摆与非摇摆)使用 TreeModel 是常见的做法吗?
你提到的评论说:
我会避免在与 Swing 无关的函数上使用 Swing 库。这是不好的编码习惯。你永远不知道 Swing 如何实现它们的树,它们的依赖关系是什么,以及这在未来会如何改变。Swing 不是一个实用程序库,而是一个 UI 库。
以我的经验,Swing 是一个复杂的 UI 工具包,但所有的模型类都像TreeModel
或TableModel
为了支持跨平台 UI 而量身定制的。也许名称模型表明这些封装了这些数据结构的独立内部工作 - 但是像ButtonModel
告诉我这样的类的存在,所有这些类都更多地支持 MVC 模型。
从文档:
那么模型为什么存在呢?最大的原因是它们使您可以灵活地确定数据的存储和检索方式。例如,如果您正在设计一个电子表格应用程序,该应用程序在一个稀疏填充的表格中显示数据,您可以创建自己的表格模型,该模型已针对此类用途进行了优化。
TreeModel 和 TreeNode 用于实现 Swing 的可视化 Tree 组件的模型。例如,您可以在他们的包裹上看到这一点javax.swing.tree
。您应该只将它们用于它们的设计(与 UI 相关的东西,请参阅 Javadocs),并且不要将它们用作数据结构。这就是你提到的这条评论所说的。这是绝对正确的。