首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >去ArrayList一次,还是每次去ArrayList?

去ArrayList一次,还是每次去ArrayList?
EN

Stack Overflow用户
提问于 2013-01-19 18:50:17
回答 1查看 123关注 0票数 1

我有一个程序有这样的结构。

代码语言:javascript
复制
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?)中的位置。是家长。页中的元素数和章节中的页数不一致。

很容易得到孩子的指数在它的父母,但它的祖父母呢?

由于元素可以(而且通常是)编号,每个章节有一个编号列表,所以我必须知道章节中元素的索引,所以当一个新元素被添加到列表中时,我可以调整数字(不需要在最后添加)。

这可以通过两种方式解决(据我所知,也就是):

  1. 在保留所有元素的每一章中都有一个ArrayList。这将要求我每次向任何页面添加新元素时,也要将其添加到章节数组中。要做到这一点,我必须浏览前几页,将它们上的所有元素加起来,并将当前页上的新元素的索引添加到该数字中,结果是章节中的新元素的索引,以及数组中的索引。每次我添加一个新元素时都要这样做。
  2. 每次需要获得本章中元素的顺序时,重新创建arrayList。这又一次意味着整理每一页,一个接一个地添加每个元素,直到我到达章节的末尾。每次添加新元素时我都需要它。

所以问题是,这两种方法中哪一种更好(更有效的内存还是处理器的时间)?哪一个更符合Java和编程的精神?有没有我不知道的第三种选择?

章节示例:

代码语言:javascript
复制
Page one {
1. something
2. more something
3. nothing
.
.
.
16. still nothing
}

Page two {
17. maybe something
18. nope, still nothing
.
.
.
21. giberish
}
etc.

问题是:哪种方法做得更好?如果你有更好的主意,你可以告诉我,但我想知道这两种方法中哪一种更好,而不是更少。

EN

回答 1

Stack Overflow用户

发布于 2013-01-19 18:56:19

你需要做一棵树。出于某种原因,程序员想把所有的东西都压平成表格结构。你说的是一棵树,你要么用一棵,要么做一棵。

遗憾的是,Java集合中没有任何用于实现树的东西。你可以很容易地做出来。

如果树中包含了不同的内容,但需要以类似的方式(作为节点)来处理,那么就执行复合图案的简单实现。一个很好的例子是文件系统树:每个节点要么是一个文件夹,要么是一个文件。如果您让它们实现一个名为FilesystemItem的接口,那么您可以将它们放入树结构中。

既然你正在做一个文档,我会推荐复合。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14417637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档