我有一个程序有这样的结构。
Document which contains (up to 20)
Chapters which contain (up to 100)
Pages which contain (up to 20)
Elements这个结构在我的程序中用JPanels表示。这意味着这个结构必须以可视化的方式表示,我不想把ArrayList作为一个整体(除非绝对必要),因为每个JPanels都有一个组件的ZOrder和一个getParent()方法。
这个结构是一维的,这意味着父元素有一个一维数组(当我说数组时,它纯粹是描述性的,我不是指ArrayList或任何类似的元素)。每个单独的元素都有一个索引,表示它在(on?)中的位置。是家长。页中的元素数和章节中的页数不一致。
很容易得到孩子的指数在它的父母,但它的祖父母呢?
由于元素可以(而且通常是)编号,每个章节有一个编号列表,所以我必须知道章节中元素的索引,所以当一个新元素被添加到列表中时,我可以调整数字(不需要在最后添加)。
这可以通过两种方式解决(据我所知,也就是):
所以问题是,这两种方法中哪一种更好(更有效的内存还是处理器的时间)?哪一个更符合Java和编程的精神?有没有我不知道的第三种选择?
章节示例:
Page one {
1. something
2. more something
3. nothing
.
.
.
16. still nothing
}
Page two {
17. maybe something
18. nope, still nothing
.
.
.
21. giberish
}
etc.问题是:哪种方法做得更好?如果你有更好的主意,你可以告诉我,但我想知道这两种方法中哪一种更好,而不是更少。
发布于 2013-01-19 18:56:19
你需要做一棵树。出于某种原因,程序员想把所有的东西都压平成表格结构。你说的是一棵树,你要么用一棵,要么做一棵。
遗憾的是,Java集合中没有任何用于实现树的东西。你可以很容易地做出来。
如果树中包含了不同的内容,但需要以类似的方式(作为节点)来处理,那么就执行复合图案的简单实现。一个很好的例子是文件系统树:每个节点要么是一个文件夹,要么是一个文件。如果您让它们实现一个名为FilesystemItem的接口,那么您可以将它们放入树结构中。
既然你正在做一个文档,我会推荐复合。
https://stackoverflow.com/questions/14417637
复制相似问题