Ordenar Array list por atributo com Bubble Sort

Senhores, bom dia!

Estou tentando ordenar por atributos um Array List com Bubble Sort
Devo fazer duas ordenações com atributo Float e String
Mas entendo o motivo do erro de um o outro funciona, pois apresenta o mesmo erro

recebo a mensagem:
“unexpected type
required: variable found: value”

Ordenar um vetor sem atributos consigo tranquilo, mas neste caso não esta dando certo. Pesquisei e não encontrei nada.

   public boolean ordenaNome( )
   if (trab == null) return false; 
    boolean trocou; int i = 0; 
    do {
        trocou = false;
        for (int j = 0; j < trab.length - 1 - i; j++) {
          if (trab[j].getNome().compareTo(trab[j+1].getNome()) > 0) {
                String tmp = trab[j].getNome();
                trab[j].getNome() = trab[j+1].getNome(); // O erro está nesta linha
                trab[j+1].getNome()= tmp; // E nessa
                trocou = true;
           }
        }
        i++;
    } while (trocou);
    return true;
   
        }

Não existe meio de definir um valor ao atributo utilizando seu getter.
Você deve trocar esta linha por
trab[j].setNome(trab[j+1].getNome()); // O erro está nesta linha
Ou seja, utilizar o setter do atributo nome no objeto correspondente ao elemento i do vetor.

Em tempo, sobre o “unexpected type required: variable found: value”:
Lembre-se, o java nem sempre segue o modo que nós, ocidentais (e N outros povos, com exceção dos árabes, japoneses, chineses e outros) utilizamos para ler, ou seja, da esquerda para a direita, de cima para baixo.
Quando o compilador encontra algo como: int x = 10 + 10;, ele não cria uma variável do tipo int na memória, executa a operação de soma e após isso ele une as duas. Pelo contrário, o compilador processa o que vem à direita da igualdade, executando tudo o que for necessário e, então, processa o que está no lado esquerdo da igualdade. Se ali consta existe a declaração de uma variável, isso será feito. Se a variável já foi declarada, ele apenas associa o valor gerado ao finalizar o lado direito e associa à variável existente.
É por isso que ocorre o erro informado, o esperado é um atributo, uma variável, porém, o que se encontra é um método.

Cara, muito obrigado, deu certo, era uma coisa simples mas que acabei nem prestando atenção.

E muito obrigado pela informação sobre a forma de leitura do Java, não tinha conhecimento sobre isso, ajudou bastante.

Sua implementação está errada.

Você não está ordenando pelo nome, você está trocando o nome dos trabalhadores.

Você tem que comparar o nome e trocar os trabalhadores de posição quando necessário.

Veja como teria que ser:

int atual = j;
int proximo = j + 1;
// compara os nomes do trabalhador atual e do próximo
if (trab[atual].getNome().compareTo(trab[proximo].getNome()) > 0) {
	// tem que trocar os dois de lugar e não trocar os nomes deles
	Trabalhador troca = trab[atual];
	trab[atual] = trab[proximo];
	trab[proximo] = troca;
	trocou = true;
}