0

Javaでリストと配列を組み合わせる方法はありますか? タイル マップのデータを 2D リストではなく 2D 配列に格納しています。これにより、セット サイズを定義できるからです。各場所には単一のタイルがあり、それを占有できるオブジェクトは 1 つしかないため、これまでのところ機能しています。複数の効果を 1 つのタイルに追加したいのですが、Java ではジェネリックを使用した配列の作成が許可されていないため、ArrayList[][] はありません。各タイルが独自のオブジェクトである場合は、効果の独自の ArrayList を持つことができますが、それは避けたいと思います。また、各タイルが持つ効果の数がわからないため、3D 配列を定義することはできません。

これを回避する方法についての提案。配列/ジェネリックの問題を回避するためのハックではなく、よりデザイン指向の提案が必要です。

4

3 に答える 3

6

複雑でネストされた構造よりも、よりオブジェクト指向のアプローチの方が適していると思います。

必要なものを単一のオブジェクトにカプセル化し、より単純なもので維持できるようにします。あなたのアプローチが鈍くなり、すぐに理解するのが難しくなっているのがわかります。

各エントリがその状態とともにグリッド内の位置を保持していれば、単一Listのまばらなエントリを維持できます。(i, j)

于 2013-06-08T02:56:41.557 に答える
1

強力なGuava Table ( JavaDoc ) が利用できます。

于 2013-06-08T05:19:19.877 に答える
1

オブジェクト指向の方法は、各タイルをオブジェクトにすることですが、あなたは本当にそれを避けたいと言います。問題がある場合は、構成の代わりに継承を使用できます。

class Effects extends ArrayList<Effect> { }

別の方法は、チェックされていないキャストを使用することです。これは、望まないとも言います。

ArrayList<Effect>[][] board = (ArrayList<Effect>[][]) new ArrayList[...][...];
于 2013-06-08T03:10:20.330 に答える