0

ボード ゲームを実装する必要があり、17 の位置があり、リンクされたリストのように「リンク」されています。

そこで、ArrayList の LinkedList を使う予定でした。(LinkedList<ArrayList<String>>または...)

ただし、いくつかのノードの後に​​マージされる 2 つの開始位置があり、プレイヤーは開始したい位置を選択できます (これは、2 つのノードの「次の」フィールドが 1 つのノードを指すことを意味し、ノードは可能性があります (必須ではありませんが、たぶん?) 2 つの 'prev' フィールドが必要です。)

また、最後の位置の隣にある追加ノードの「次の」フィールドがそれ自体を指すようにしたいと考えています。

要するに、LinkedList に似ているが、いくつかの変更を加えたコレクション クラスが必要です。

どうすればこれを行うことができますか?

私のプログラミングレベルは初級~中級で、Java Collections Framework に似た LinkedList の定義 (あまり覚えていませんが...) と、教科書を使用して c++ std::list を学習しました。

だから私の質問はこれらです。

単純な List(and Node) クラスを実装し、18 個のノードを作成して、これらのノードのプライベート フィールドを設定したい方法で設定し、ArrayLists をその「データ」フィールドに追加する必要がありますか?

また、Stack の LinkedList を使用することになりましたが (最新のプッシュ要素のみが必要なため)、プライベート ArrayList クラスを作成し、Stack の実装と同様の方法で自分の好みに合わせた方が便利だと感じました。 ArrayList クラスを使用します。どのように聞こえますか?

私が心配しているのは、私はあまり優れたプログラマーではないことです。自分で定義すると、信頼性が低く、作業に非常に時間がかかる可能性があります (締め切りがあります)。

これを達成するためのより良い方法はありますか?(おそらく、標準クラスを拡張する??よくわかりません..)

アドバイスをいただければ幸いです。

ありがとうございました。

4

1 に答える 1

1

残念ながら、あなたがやろうとしていること (つまり、あなたの要件) についてのあなたの説明は、理解するのが難しすぎます。したがって、一般的な回答に限定します。

リストのようなデータ構造で「手術」を行うことが本当に必要な場合は、それを実装する必要があります。

既存のリスト/コレクション クラスを拡張してこれを行おうとすると、(少なくとも) いくつかの理由で失敗する可能性があります。

  • コードをいじる必要があるもののいくつかは として宣言されておりprivate、それをいじるのは非常に困難です (そして非常にお勧めできません)。(不可能ではありませんが、厄介なリフレクション トリックを実行する必要があり、コードが複雑で脆弱で非効率的になります。他に代替手段がまったくない場合を除き、これは実行すべきことではありません。)

  • 成功したとしても、名目上は 1 つ以上の既存のコレクション インターフェイスを実装するデータ構造が得られますが、(ほとんどの場合)そのインターフェイスがどのように動作するかという契約は破られます。


私が心配しているのは、私があまり優れたプログラマーではないことです。自分で定義すると、信頼性が低くなり、その作業にも非常に時間がかかる可能性があります。(締め切りがあります)

  1. 「演習のポイント」は、より良いプログラマーになることを学ぶことです...
  2. IMO、余分な作業を避けるために作業に多くの時間を費やす可能性が高く、最終結果の信頼性が低くなります
  3. 締め切りは心配ですが、締め切りに対処する最善の方法は、十分に早く開始し (できると仮定して)、危険な近道をするのではなく、正しい方法で問題を解決しようとすることです。

とにかく、私のアドバイスは、正しい方法でそれを行うことです.

  • 締め切りに間に合わなかったとしても、良い試みのように見えるコードが残っているため、(期待されるように) それに応じてマークする必要があります。

  • 一方、これを間違った方法で行おうとすると、動作するプログラムが得られても、間違った方法で行ったという理由でマークダウンされる可能性があります。また、失敗する可能性があり、コードを適切に記述しようとして失敗した場合よりも悪いマークが付けられる可能性があります。

于 2013-03-30T04:02:11.550 に答える