Tentativa de usar o Comparator para classificar por nome, ignorar maiúsculas e minúsculas e nulos primeiro

Estou tendo problemas ao usar a classe Java 8 Comparator para classificar uma lista de itens.

Meu atual comparador de trabalho está abaixo:

comparator = Comparator.comparing(Person::getName, Comparator.nullsFirst(Comparator.naturalOrder()));

Isso funciona: ele ordena a lista pelo nome com os valores nulos primeiro. No entanto, agora estou tentando ignorar o caso dos nomes.

Eu sei que posso escrever um novo getter que retorne o nome em minúsculas, mas não quero seguir essa abordagem, pois preciso fazer isso para vários atributos.

Procurando on-line, parece que eu deveria estar usandoString.CASE_INSENSITIVE_ORDER, mas os únicos exemplos que vejo não incluem a especificação de pedido nulo.

Eu posso fazer algo assim:

comparator = Comparator.comparing(Person::getName, String.CASE_INSENSITIVE_ORDER);

No entanto, sempre que tento incluir oComparator.nullsFirst Acabo recebendo erros de digitação e estou confuso sobre como continuar.

Eu tentei fazer uma cadeia semelhante a

thenComparing(Comparator.nullsFirst(Comparator.naturalOrder))

mas isso também não funciona.

Alguém poderia me dar alguns conselhos sobre como eu posso agrupá-los para classificar por nome (sem distinção entre maiúsculas e minúsculas) e depois solicitar os valores nulos. Eu pareço estar me confundindo com os tipos.

questionAnswers(1)

yourAnswerToTheQuestion