Editar rows da tabela

Como alterar a linha de uma tabela a partir do seu conteúdo? Na minha aplicação, inicio a frame com uma tabela com 33 rows criadas (e nulas) apenas para melhor visualização, então, conforme o programa recebe as entradas, ele substitui essas linhas vazias pelas recebidas, em ordem numérica. Eu consegui fazer a substituição “parcialmente”, pois ele sempre pula a primeira linha. Como faço pra que ele comece sempre pela linha inicial? Aqui segue meu code.

	public void addRow(PacketHandler ph) 
	{	
		if(lines.size() < 34)
		{
			if(ph != null) // ph é o conteúdo recebido a ser inserido na linha (checagem se nula pois na inicialização da tabelam recebe as 33 entradas nulas)
			{
				int num = getFirstFreeRow();
				lines.set(num, ph);
				if(num == 33)
					lines.add(null);	// adiciona uma nova linha (34ª) para ir ao else na próxima adição
			}			
			else
				lines.add(ph); // adiciona as 33 linhas
		}
		else
		{
			lines.set(lines.size(), ph);
			lines.add(null);
		}
		
		int lastIndex = getRowCount() - 1;
		fireTableRowsInserted(lastIndex, lastIndex);
	}

public int getFirstFreeRow()
	{
		int row = -1;
		for(int i=1; i<34; i++)
		{
			if(lines.get(i) != null)
				continue;
			
			row = i;
			break;
		}
		return row;
	}

O que está errado? Ao atingir as 32 entradas (pois pula a 1a) ele começa a alterar a segunda com as novas packets, ao invés de adicionar após as 33 já criadas também.