Preencher as matrizes sem as estourar

Boa tarde. Não consigo ter mais idéias para isso preciso de sugestões.
Exemplo eu recebo uma String "JOAO#31/FRANCISCO#26/ANA#20/LUIZ#29/" com o split "/" tenho um vetor de 4 posições logo essa é a quantidade máxima de posições ou pessoas (A String têm tamanho variável eu usei 4 como exemplo ).
A mComReserva sempre terá tamanho fixo 4x5 já a mSemReserva é o valor fixo 4x5 menos o valor total de posições determinado pelo vet1 (foi o único jeito que encontrei).
OBS:
1- O vet2 sempre terá duas posições já que vet1[0] = JOAO#31 split vet2[0]= JOAO e vet2[1]= 31 argumento #.
2- mSemReserva têm tamanho indeterminado visto que não se sabe quantas pessoas ficaram sem reservas o único jeito que eu encontrei para não deixar ela criar posições desnecessárias foi tirar o total de pessoas do vet1 e as reservadas da mComReserva mas não estou muito certo sobre isso.
3- Existe a possibilidade de todas as reservas não serem preenchidas mComReserva se isso acontece é porque não passaram no teste condicional idade>=16, ou seja, se não for para essa matriz vai para mSemReserva isso também pode preencher além do limite.
4- Ao contrário da observação 3 se o número de pessoas em que a condição for atendida for superior a 4x5 ela também deve ir para mSemReserva.

[code] public static void main(String[] args) {
Scanner leia = new Scanner(System.in);
System.out.println("Cole a String: ");
String string = leia.next().replaceAll(" ", "");
// string = string.concat(string);

    String vet1[] = string.split("/");
    Pessoa mComReserva[][] = new Pessoa[4][5];
    Pessoa mSemReserva[][] = new Pessoa[vet1.length - 4][vet1.length - 5];

    int cont = 0;
    for (int i = 0; i < vet1.length; i++) {
        for (int j = 0; j < vet1.length; j++) {
            String vet2[] = vet1[cont].split("#");
            Pessoa pessoa = new Pessoa();
            pessoa.setNome(vet2[0]); // a posição do nome é anterior ao da idade = 0
            pessoa.setIdade(vet2[1]); // a posição da idade é posterior ao nome = 1
            cont++;
            if (Integer.parseInt(pessoa.getIdade()) >= 16) {
                mComReserva[i][j] = pessoa;
            } else {
                mSemReserva[i][j] = pessoa;
            }
        }
    }

}
[/code]Dúvida:Como posso preencher as matrizes sem estourar?

オニマツ君 : que tal usar ArrayList? Se seu problema exige uma matriz, você pode sempre acrescentar os elementos a um ArrayList e o converter para vetor, usando o método http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html#toArray(T[]) . Um exemplo:

List<String> strings = new ArrayList<String>();
strings.add (....);
strings.add (....);
String[] str = new String[0];
str = strings.toArray(str); // aqui um array com o tamanho desejado.