我有一個這樣的結構的程序。每次ArrayList一次或ArrayList?
Document which contains (up to 20)
Chapters which contain (up to 100)
Pages which contain (up to 20)
Elements
該結構在我的程序中由JPanels表示。這意味着這個結構必須在視覺上表現出來,而且我寧願不製作一個完整的ArrayList複合體(除非絕對必要),因爲每個JPanel都有一個ZOrder組件和一個getParent()方法。
這個結構是一維的,意思是它的子對象有一個一維數組(當我說數組時,它純粹是描述性的,我不是指ArrayList或類似的東西)。每個單獨的元素都有一個索引,表示它的位置(在?上)它是父級。頁面中的元素數量和章節中的頁面數量不一致。
在孩子的父母身上很容易找到孩子的索引,但那是爺爺奶奶呢?因爲元素可以是(通常是)編號,每章有一個編號列表,所以我必須知道章節中元素的索引,所以我可以在添加新元素時調整數字到列表中(最後不需要添加)。
這可以通過兩種方式來解決(我知道的,這是):
有在保留所有元素每章一個ArrayList。這需要我這樣做,每次我向任何頁面添加一個新元素,將其添加到章節數組中。 爲了達到這個目的,我必須去掉所有前面的頁面,將它們上的所有元素相加,並將當前頁面上新元素的索引添加到該數字,結果是該章節中新元素的索引,因此,在數組中。每次添加新元素時都要這樣做。
每次我需要獲取章節中元素的順序時,重新創建arrayList。這也意味着每一頁都會變得越來越緊密,並且每個元素都會一個接一個地添加,直到我到達章節的最後。每次添加新元素時我都需要它。
所以問題是,這兩種方法哪一種更好(更高效的內存或處理器時間明智)?哪一個更符合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.
的問題是:這樣做是更好的哪種方式?如果你有更好的主意,你可以告訴我,但我想知道以上兩種方式哪種更好,哪種方式更好。
但是,這將需要我爲同一件事創建兩個結構,一個用於視覺表示,另一個用於計算,這將使我的程序的時間和內存消耗翻倍,這兩個我都試圖避免。一棵樹可以精確地告訴每個節點級別有多少葉子? – Karlovsky120
我不明白雙重論點。你有什麼是一棵樹。每個節點都會有一個對象? – Rob
好吧,它不會讓爭論翻番,但我想,你告訴我要做的事情已經完成了。 章是一個JPanel,它是父頁幷包含Pages。 Page是一個JPanel,它包含元素,並且包含元素。元素是JPanels。 有了這個結構,我有一種樹。但是我怎麼能確定一個元素相對於一個章節的索引。檢查示例:我想獲得相對於「nope,還沒什麼」一章的索引。相對於它的頁面,它有索引2,但相對於該章節,其索引是18)。 – Karlovsky120