私は一連のタスクを完了する必要があるプロセスがあります。プロセスがすでに完了しているタスクを試行する可能性があります。その場合、試行を無視して別のタスクを完了するための要求を生成する必要があります。どのタスクが完了し、どのタスクがまだ処理されているかを追跡する良い方法はわかりません。アイテムの「チェックリスト」を適切に処理する方法
ここでは、ゲーム「Yahtzee」を例として使用して、現在どのように処理しているかを示します。私が最初にこのケースでは、スコアリングの組み合わせをタスクのリストを作成します。
combinations = new ArrayList<String>();
combinations.add("one");
combinations.add("two");
...
combinations.add("fullhouse");
combinations.add("smallstraight");
combinations.add("yahtzee");
...
プレイヤーはこれらの組み合わせのいずれかを使用する場合、私はこのケースでは、ArrayListのからそれを削除し、「小さなストレート」の組み合わせ:
をpublic void selectSmallStraight() {
int index = combinations.indexOf("smallstraight");
if(index < 0)
System.out.println("Small Straight already used");
//Prompt the player for another selection
else
combinations.remove(index);
score += 30;
}
すべての組み合わせが使用されると、ゲームが終了します。
アレイリストを使用することは、私には非常に原始的なようですが、醜いとは言えません。私はMap<String, Boolean>
を使って考えてみましたが、いったん使用されるとそのオブジェクトをfalseとマークしていますが、これをもっと優雅にするための "標準的な"方法がすでにあると思います。
私はArrayListのアプローチを持っている主な問題は、パフォーマンスで、あなたが述べただけのよう。 – CalMlynarczyk
@Kededroしたがって、HashMapに依存するHashSetは、そのジョブを実行します – Omnaest