このような構造のプログラムがあります。
Document which contains (up to 20)
Chapters which contain (up to 100)
Pages which contain (up to 20)
Elements
この構造は、私のプログラムではJPanelsによって表されます。つまり、この構造は視覚的に表現する必要があります。各JPanelにはコンポーネントのZOrderとgetParent()メソッドがあるため、(絶対に必要な場合を除いて)ArrayListの複合体全体を作成したくありません。
この構造は1次元です。つまり、親には子の1次元配列(配列と言えば、純粋に説明的なものであり、ArrayListなどを意味するものではありません)があります。個々の要素には、その親内(上?)の位置を表すインデックスがあります。ページ内の要素の数、およびチャプター内のページに一貫性がありません。
親の中で子のインデックスを取得するのは簡単ですが、祖父母はどうでしょうか。
要素には番号を付けることができ(通常は番号が付けられます)、章ごとに1つの番号付きリストがあるため、章内の要素のインデックスを知っている必要があります。これにより、新しい要素がリストに追加されたときに番号を調整できます(最後に追加する必要はありません)。
これは2つの方法で解決できます(私が知っている、つまり):
すべての要素を保持するArrayListを各章に配置します。これには、ページに新しい要素を追加するたびに、それをチャプター配列にも追加する必要があります。これを実現するには、前のすべてのページを調べ、それらのすべての要素を合計し、現在のページの新しい要素のインデックスをその番号に追加します。その結果、章の新しい要素のインデックスになります。したがって、アレイ内。そして、新しい要素を追加するたびにそれを行います。
章の要素の順序を取得する必要があるたびに、arrayListを再作成します。これもまた、各ページを調べて、章の終わりに達するまで各要素を次々に追加することを意味します。そして、新しい要素が追加されるたびに必要になります。
したがって、問題は、この2つの方法のどちらが優れているか(時間的にはより効率的なメモリまたはプロセッサ)ですか?Javaとプログラミングの精神に沿ったものはどれですか?私が知らない3番目のオプションはありますか?
章の例:
Page one {
1. something
2. more something
3. nothing
.
.
.
16. still nothing
}
Page two {
17. maybe something
18. nope, still nothing
.
.
.
21. giberish
}
etc.
問題は、どちらの方法が優れているかということです。あなたがより良い考えを持っているなら、あなたは私に言うことができます、しかし私は上記の2つのどちらがより良いかを知りたいです。