Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java树模型_Java_Data Structures_Tree_Treemodel - Fatal编程技术网

使用Java树模型

使用Java树模型,java,data-structures,tree,treemodel,Java,Data Structures,Tree,Treemodel,我知道这里有人问过这个问题: 但是在Java中实现树的最佳实践是什么?在上面链接的问题中,投票率第二高的答案提到了TreeModel,但在评论中有人说这样做不是一种好的编码实践。这是真的吗?(我不明白swing和non swing)是否在使用TreeModel常见做法?您提到的评论说: 我会避免在与Swing无关的函数上使用Swing库。这是糟糕的编码实践。您永远不知道Swing是如何实现它们的树的,它们的依赖关系是什么,以及将来如何改变它们。Swing不是一个实用程序库,而是一个UI库 根据我

我知道这里有人问过这个问题:


但是在Java中实现树的最佳实践是什么?在上面链接的问题中,投票率第二高的答案提到了TreeModel,但在评论中有人说这样做不是一种好的编码实践。这是真的吗?(我不明白swing和non swing)是否在使用TreeModel常见做法?

您提到的评论说:

我会避免在与Swing无关的函数上使用Swing库。这是糟糕的编码实践。您永远不知道Swing是如何实现它们的树的,它们的依赖关系是什么,以及将来如何改变它们。Swing不是一个实用程序库,而是一个UI库

根据我的经验,Swing是一个复杂的UI工具包,但所有的工具,如
TreeModel
TableModel
都是为支持跨平台UI而定制的。也许名称模型表明这些封装了这些数据结构的独立内部工作-但是像
按钮模型这样的类的存在告诉我,所有这些类更多地是为了支持MVC模型

从:

那么,为什么存在模型呢?最大的原因是,它们在决定如何存储和检索数据方面为您提供了灵活性。例如,如果您正在设计一个电子表格应用程序,该应用程序在一个稀疏填充的表中显示数据,那么您可以创建自己的表模型,该模型针对这种用途进行了优化


TreeModel和TreeNode用于实现Swing的可视化树组件的模型。例如,您可以在他们的包
javax.swing.tree
中看到这一点。您应该只在设计时使用它们(UI相关的东西,请参阅Javadocs),而不要将它们用作数据结构。这就是你提到的这个评论所告诉我们的。这是绝对正确的。

Swing的可能副本是一个用户界面工具包,TreeModel是该工具包的一部分。与任何单一UI工具包的零耦合更有可能产生可移植代码。树型数据结构非常简单,使用Swing没有明显的优势。我在问题中是否提到过那篇文章会有区别吗?似乎前面的问题已经完全解决了这个问题。但这有不同的重点,所以我可能弄错了。