2016-02-09 5 views
8

私はのリストの一部を再利用できるようにするListを実装するデータ構造を探しています。あなたが見ることができるように、赤のシーケンス(42, 88, 76, 60)、青シーケンス(21, 9, 47)は、それぞれが独立したリストを表す、複数回使用されているコピーを避けるためにリストの一部を共有する

enter image description here

:これは、次の3つのリストを検討し説明するために

他のリストの一部として共有されます。実際には、リストはずっと長くなる可能性があります。

リターン値として使用されるリストは、読み取り専用である必要があります。リストのコレクションを作成するプロシージャは、リストを変更できる唯一のものになります(add(..)操作などを使用します)。リストの一部を共有すると、addAll(..)(内部ではSystem.arraycopy(..)を使用)を使用してリスト要素を広範囲にコピーすることができます。

私のニーズを満たす軽量のList実装がありますか?それとも、自分自身を実装する比較的簡単な方法がありますか?

+0

リストのコレクションを作成するプロシージャは、再利用可能なパーツを認識していますか、またはそれ自体を検出する予定ですか? – jaco0646

+1

実際にリストである必要がありますか?このリストのコレクションの消費者はList APIのどの部分を気にかけていますか、宣言するパラメータのタイプを制御しますか? Iterable(コンシューマが反復処理する場合のみ)やSet(順序が関係ない場合)、さらにはMultiSet(順序は関係ありませんが倍数は許されます)でも簡単な解決策がありますが、Listはこの機能に欠けているようです。 – Douglas

+0

@ jaco0646プロシージャは、 'addAll(reusablePart)'が呼び出されるように再利用可能な部分を認識します。 – Frithjof

答えて