以下のタスクを実行するために必要なJavaコードを書きなさい：
地下ダンジョンのマップを生成するアルゴリズムは、ダンジョンに追加する壁と部屋をランダムに選択することに基づいている。次に、選択された壁のランダムな位置にドアが配置され、壁のドアの位置に一致する部屋にドアが配置される。その後、2つの部屋をドアに沿って並べ、新しい部屋が既存の部屋と重なる場合、アルゴリズムは重ならなくなるまで新しい部屋の移動を試みる。このプロセスは、利用可能な部屋がすべて配置されるか、アルゴリズムが一定回数試みて部屋を配置できなくなるまで繰り返される。その結果、部屋とドアがつながった地下ダンジョンのマップがランダムに生成される。
write the required java code to perform the followings tasks:
The algorithm for generating a map of an underground dungeon is based on randomly selecting a wall and a room to add to the dungeon. A door is then placed at a random location on the selected wall, and a door is placed on the room that matches the location of the door on the wall. The two rooms are then aligned along the door, and if the new room overlaps with an existing room, the algorithm attempts to move the new room until it no longer overlaps. This process is repeated until all available rooms have been placed, or until the algorithm fails to place a room after a certain number of attempts. The result is a randomly generated map of an underground dungeon with connected rooms and doors.