Como ordenar um array list de objetos por algum atributo?

Preciso ordenar uma lista por um atributo do tipo LocalDate em java, não faço ideia de como começar…ainda tem o problema que essa parte eh um relatório então a lista original deve se manter da mesma forma. Eh um tipo de filtro top dez.

Lista<TipoDado> lista = new ArrayList<TipoDado>(listaOriginal);
lista.sort(Comparator.comparing(TipoDado::getAtributo));
1 curtida

staroski, o tipo de dado na declaração da lista acima…eh o da lista original?

Fiz essas classes para testar fora do sistema, para ficar mais fácil pra mim e tal…
Essa eh a Dados…tem os atributos nome e idade e a lista.

import java.util.List;
import java.util.ArrayList;
import java.time.LocalDate;

class Dados {
  
  private String nome;
  private LocalDate data;
  
  public String getNome(){
    return nome;
  }
  public void setNome(String nome){
    this.nome = nome;
  }
  public LocalDate getData(){
    return data;
  }
  public void setData(LocalDate data){
    this.data = data;
  }
  
  ArrayList<Dados> teste = new ArrayList<Dados>();

  public void Cadastrar(String nome, LocalDate data){
      setNome(nome);
      setData(data);
  }

}

//Essa eh a main

    import java.time.LocalDate;

    class Main {
      public static void main(String[] args) {
        System.out.println("Iniciando...\n");
    
    Dados d = new Dados();
    Dados e = new Dados();
    Dados f = new Dados();
    Dados g = new Dados();

e.Cadastrar("Anonymous",LocalDate.of(2010, 11, 13));
f.Cadastrar("ET",LocalDate.of(2011, 11, 13));
g.Cadastrar("Luis",LocalDate.of(2012, 11, 13));

d.teste.add(e);
d.teste.add(f);
d.teste.add(g);

//imprimindo só para teste
for(int x = 0; x < d.teste.size(); x++){
    System.out.println(""+d.teste.get(x).getNome());
}

// staroski
Lista<TipoDado> lista = new ArrayList<TipoDado>(listaOriginal);
lista.sort(Comparator.comparing(TipoDado::getAtributo));

//imprimir nova lista aq

  }
}