Primeiramente o código que você postou está com erros de compilação, então nem dá pra executar ele.
Após arrumar os erros de compilação, realmente acontece um laço enorme seguido de um estouro de pilha, o erro acontece pelo seguinte motivo:
No método main você chama o contrutor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
No construtor da classe OrdenacaoString você chama o método simulacaoLeituraDeDados;
No método simulacaoLeituraDeDados você chama novamente o construtor da classe OrdenacaoString;
E assim sucessivamente até a memória acabar.
O construtor de uma classe serve para inicializar os atributos de instância dos objetos daquela classe, ele não deveria executar nada.
Apague o construtor que você criou e modifique seu método main pra ficar assim:
public static void main(String[] args) {
OrdenacaoString principal = new OrdenacaoString(); // objeto criado
principal.simulacaoLeituraDeDados();
principal.mostraTrabalhadoresCadastrados();
}
E outra coisa, já que está implementando tudo na mesma classe, não há motivo para instanciar novamente a classe OrdenacaoString dentro do método simulacaoLeituraDeDados.
O vetor de trabalhadores também não precisa ser uma variável de instância.