There are three things you could use:
- 2D Array.
- List.
- Map.
2D Arrays are the best, unless your map is huge, in which case you could use Lists.
2D Array:
Pros: It has the fastest lookup times.
Cons: It (most likely) takes the most memory.
The lookup times probably heavily outweigh the memory costs. Unless your dungeon is hundreds of thousands of tiles large, this is probably the way to go.
List (probably ArrayList):
Pros: Only storing items you need.
Cons: Lookup times will be horrible.
While Lists will use less memory, it will take a lot longer to find a tile or item, as you'll have to iterate over the List to find something matching a location.
Map (probably HashMap):
Pros: Each location will be linked to an object per map, so lookup times will be ok.
Cons: Lookup times will not be optimal, will use moderate amounts of memory.
Maps are in between Lists and Arrays. The will use up more memory than arrays, but have better lookup times than Lists.
2D Arrays are the best because of the lookup time. On most modern computers, memory is not a concern. If it is, you can always cache areas not currently being used to files and dynamically load them as needed.