I have a map that uses an arraylist to hold its tile data because I need to add and remove tiles. I used another arraylist to correct the shifting of variables when a int is deleted from an arraylist. My map only renders one set of tiles, so for example: I have a for loop to draw air tiles and another for stone. If I call the air one first, the stone won't render. And vice versa. Heres my code (I use slick2d):
import java.util.ArrayList;
 
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;
 
public class Map {
 
	public static final int CLEAR = 0;
	public static final int STONE = 1;
	public static final int GRASS = 2;
	public static final int DIRT = 3;
 
	public static final int WIDTH = 32;
	public static final int HEIGHT = 24;
 
	public static final int TILE_SIZE = 25;
 
	static ArrayList<ArrayList<Integer>> map = new ArrayList<ArrayList<Integer>>(WIDTH * HEIGHT);
 
	Image air, grass, stone, dirt;
 
	public Map() {
 
		for (int x = 0; x < WIDTH; x++) {
			ArrayList<Integer> yaxis = new ArrayList<Integer>();
			for (int y = 0; y < HEIGHT; y++) {
				yaxis.add(CLEAR);
			}
			map.add(yaxis);
		}
 
		for (int x = 0; x < WIDTH; x++) {
			ArrayList<Integer> yaxis = new ArrayList<Integer>();
			for (int y = 0; y < HEIGHT; y++) {
				yaxis.add(STONE);
			}
			map.add(yaxis);
		}
 
		try {
			init(null, null);
		} catch (SlickException e) {
			e.printStackTrace();
		}
		render(null, null, null);
 
	}
 
	public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
		air = new Image("res/air.png");
		grass = new Image("res/grass.png");
		stone = new Image("res/stone.png");
		dirt = new Image("res/dirt.png");
	}
 
	public void render(GameContainer gc, StateBasedGame sbg, Graphics g) {
 
		for (int x = 0; x < map.size(); x++) {
			for (int y = 0; y < map.get(x).size(); y++) {
				switch (map.get(x).get(y)) {
				case CLEAR:
					air.draw(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
					break;
				case STONE:
					stone.draw(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
					break;
				case GRASS:
					grass.draw(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
					break;
				case DIRT:
					dirt.draw(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
					break;
				}
			}
		}
	}
 
}

So my question is how would I go about getting all the tiles to render, and not just one set?