Entity collision problem

My level its made of entities(mobs , walls…) I want to make collision for them all in one especially for the walls all my entities have x and y also I have a move class here is my code.The Entity collision works but it has many problems(like if I hit the left wall it will continue to walk but it will go down and not pass the wall I want to not move at all and sometimes it goes up and down very fast when its stuck between walls)
Entity collision


private void entityCollision() {
		for (int j = 0; j < getMobs().size(); j++) {
			for (int i = 0; i < getTile().size(); i++) {
				if (getMobs().get(j).getX() <= getTile().get(i).getX() + 22 && getMobs().get(j).getX() >= getTile().get(i).getX() - 6 && getMobs().get(j).getY() <= getTile().get(i).getY() + 30
						&& getMobs().get(j).getY() >= getTile().get(i).getY() - 15) {
					if (getMobs().get(j).getX() <= getTile().get(i).getX()) {
						((Mob) getMobs().get(j)).move(0, 0);
					} else {
						((Mob) getMobs().get(j)).move(1, 0);
					}
					if (getMobs().get(j).getX() >= getTile().get(i).getX()) {
						((Mob) getMobs().get(j)).move(0, 0);
					} else {
						((Mob) getMobs().get(j)).move(-1, 0);
					}
					if (getMobs().get(j).getY() <= getTile().get(i).getY()) {
						((Mob) getMobs().get(j)).move(0, 0);
					} else {
						((Mob) getMobs().get(j)).move(0, 1);
					}
					if (getMobs().get(j).getY() >= getTile().get(i).getY()) {
						((Mob) getMobs().get(j)).move(0, 0);
					} else {
						((Mob) getMobs().get(j)).move(0, -1);
					}
				}
			}
		}
		for (int j = 0; j < getPlayers().size(); j++) {
			for (int i = 0; i < getTile().size(); i++) {
				if (getPlayers().get(j).getX() <= getTile().get(i).getX() + 22 && getPlayers().get(j).getX() >= getTile().get(i).getX() - 6
						&& getPlayers().get(j).getY() <= getTile().get(i).getY() + 30 && getPlayers().get(j).getY() >= getTile().get(i).getY() - 15) {
					if (getPlayers().get(j).getX() <= getTile().get(i).getX()) {
						((Mob) getPlayers().get(j)).move(0, 0);
					} else {
						((Mob) getPlayers().get(j)).move(1, 0);
					}
					if (getPlayers().get(j).getX() >= getTile().get(i).getX()) {
						((Mob) getPlayers().get(j)).move(0, 0);
					} else {
						((Mob) getPlayers().get(j)).move(-1, 0);
					}
					if (getPlayers().get(j).getY() <= getTile().get(i).getY()) {
						((Mob) getPlayers().get(j)).move(0, 0);
					} else {
						((Mob) getPlayers().get(j)).move(0, 1);
					}
					if (getPlayers().get(j).getY() >= getTile().get(i).getY()) {
						((Mob) getPlayers().get(j)).move(0, 0);
					} else {
						((Mob) getPlayers().get(j)).move(0, -1);
					}
				}
			}
			for (int i = 0; i < getMobs().size(); i++) {
				if (getPlayers().get(j).getX() <= getMobs().get(i).getX() + 16 && getPlayers().get(j).getX() >= getMobs().get(i).getX() - 16
						&& getPlayers().get(j).getY() <= getMobs().get(i).getY() + 16 && getPlayers().get(j).getY() >= getMobs().get(i).getY() - 16) {
					if (getPlayers().get(j).getX() <= getMobs().get(i).getX()) {
						((Mob) getPlayers().get(j)).move(0, 0);
					} else {
						((Mob) getPlayers().get(j)).move(1, 0);
					}
					if (getPlayers().get(j).getX() >= getMobs().get(i).getX()) {
						((Mob) getPlayers().get(j)).move(0, 0);
					} else {
						((Mob) getPlayers().get(j)).move(-1, 0);
					}
					if (getPlayers().get(j).getY() <= getMobs().get(i).getY()) {
						((Mob) getPlayers().get(j)).move(0, 0);
					} else {
						((Mob) getPlayers().get(j)).move(0, 1);
					}
					if (getPlayers().get(j).getY() >= getMobs().get(i).getY()) {
						((Mob) getPlayers().get(j)).move(0, 0);
					} else {
						((Mob) getPlayers().get(j)).move(0, -1);
					}
				}
			}
		}
		System.out.println(getClientPlayer().getX() + " " + getClientPlayer().getY());
	}

in this code there are 3 parts collision with player and tiles(walls), with player and mobs, mobs and mobs(don’t work at all)
and here is the move class this doesn’t have problems I use this to move player and mobs


public void move(double xa, double ya) {
		if (xa != 0 && ya != 0) {
			move(xa, 0);
			move(0, ya);
			return;
		}

		if (xa > 0)
			dir = Direction.RIGHT;
		if (xa < 0)
			dir = Direction.LEFT;
		if (ya > 0)
			dir = Direction.DOWN;
		if (ya < 0)
			dir = Direction.UP;
for (int x = 0; x < Math.abs(xa); x++) {
			if (!collision(abs(xa), ya)) {
				this.x += abs(xa);
			}
		}
		for (int y = 0; y < Math.abs(ya); y++) {
			if (!collision(xa, abs(ya))) {
				this.y += abs(ya);
			}
		}

and this is collsion class I use for the tiles(the tiles are generated from a picture each pixel its some tile they don’t have x or y they have only sprite)


private boolean collision(double xa, double ya) {
		boolean solid = false;
		for (int c = 0; c < 4; c++) {
			double xt = ((x + xa) - c % 2 * 15) / 16; // Sprite collision fix
			double yt = ((y + ya) - c / 2 * 15) / 16;
			int ix = (int) Math.ceil(xt);
			int iy = (int) Math.ceil(yt);
			if (c % 2 == 0)
				ix = (int) Math.floor(xt);
			if (c / 2 == 0)
				iy = (int) Math.floor(yt);
			if (level.getTile(ix, iy).solid())
				solid = true;
		}
		return solid;
	}