Ajuda batalha naval

Ai pessoal!!
Tou a precisar de uma ajuda para um trabaho em java! tenho que fazer o jogo batalha naval, mas tou com um problema! como é que eu vou gerar as cordenada dos barcos sem eles ficarem uns em cima dos outros?
Pensei fazer tipo 3 cordenadas x(coordenada horizontal), y(coordenada vertical) e geralas com o random mas por exemplo um submarino tem 3 casas entao pensei colocalas num vector algo do genero como esta no codigo o meu problema e se esta e a melhor forma ou sera com as colecçoes e como sera a melhor forma! e que depois como e k eu vejo s nakela kordenada ja la esta um navio?? lembrei-me de fazer por exemplo outro vector k coloca-se uns nas posiçoes ja ocupadas e quando fosse gerado um novo navio ia ver s alguma das novas cordenadas ja estavam ocupada! k axam?? tou bem??

[code]public class Submarino {
int subpos[]=new int[3];

public void getSub(){
	int x, y, dir;
	x=(int)(10*Math.random());
	y=(int)(10*Math.random());
	dir=(int)(4*Math.random());
    
    if (dir==1)//desce no tabuleiro
    {
     subpos[0]= y;
     subpos[1]=y++;
     subpos[2]=y++;
    }

    if(dir==2)// sobe
    {
     subpos[0]= y;
     y-=1;
     subpos[1]=y;
     y-=1;
     subpos[2]=y;
    }
    if(dir==3)// esquerda pa direita;
    {
     subpos[0]= x;
     x+=1;
     subpos[1]=x;
     x+=1;
     subpos[2]=x++;
    }
    if(dir==4)// direita pa esquerda
    {
     subpos[0]=x;
     x-=1;
     subpos[1]=x;
     x-=x;
     subpos[2]=x;
    }
    
}[/code]