Card クラスがあり、Deck クラスを作成したいと考えています。カードのリストを保存するためにコレクションで利用できるものを調べていますが、カードを操作する際には可能な限り多くの自由が必要であることを知っています。
デッキのどこにでも新しいカードを挿入し、それらをシャッフルし (Collections.shuffle() が機能するはずです)、任意のカードをのぞいて、上、下、および中央のどこからでもカードを取得 (削除) できるようにしたいと考えています。カードの山でできることは何でも可能であるべきです。たとえば、「LIFOのみ」の制限はありません。
これまでに見つけたものと、それぞれの問題は次のとおりです。
- リスト: 必要なだけの自由を提供しているように見えますが、明らかに、一番上のカードを選ぶなどの単純なことのために、いくつかのヘルパー関数を追加する必要があります。今のところまだ私のお気に入りのソリューションです。
- スタック: 潜在的に私が求めているすべてのことを行いますが、私が読んだことから、最良の実装ではありません (Vector を拡張し、その動作の単なるスタックではありませんか?)
- Deque: 必要な機能がありますが、どのインデックスにも新しいアイテムを挿入できないようです (また、「getAt(index)」も同様です)。
私がやろうとしていることに対して、上記のどのクラスよりも優れた既製のクラスはありますか? 「完璧」なものが存在しない場合、代わりにどのクラスを拡張のベースとして使用する必要がありますか?
注: 今のところ、同期を気にするかどうかはわかりません。私はこれも Java 6 の観点から見ていますが、特に既製のソリューションがある場合は、Java 7 ソリューションに対してオープンです。