Well do you store the positions of the tiles in the tile class? If not, you'll need an array, not an arraylist to store your tiles in. You can then loop through the tiles and get the current position of the loop. Example:
Tile up = null;
for(int x = 0; x < map_size; x++)
for(int y = 0; y < map_size; y++)
up = tiles[player.position.x][player.position.y + 1]
Obviously you'd need to check for out of bounds exceptions etc... But you really shouldn't use an arraylist as you'll never actually remove tiles. You may just change the tile type. That's why an array is better for these situations.