Ordenar dois campos de uma List<>

tenho o seguinte objeto
nome: Evandro
dispositivo: 7
descricao : sadsdsdsads

nome : jose
dispositivo : 5
descricao: dassddsdddd

nome : Evandro
dispositivo : 5
descricao: dadsdas

nome: jose
dispositivo: 1
descricao: aaaaaaaaa

gostaria de ordernar meu objeto em ordem pelo nome e dispositivo assim

nome : Evandro
dispositivo : 5
descricao: dadsdas

nome: Evandro
dispositivo: 7
descricao : sadsdsdsads

nome: jose
dispositivo: 1
descricao: aaaaaaaaa

nome : jose
dispositivo : 5
descricao: dassddsdddd

como eu posso fazer isso ???

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Dado> dados = new ArrayList<>();
        dados.add(new Dado("Evandro", 7));
        dados.add(new Dado("Jose", 5));
        dados.add(new Dado("Evandro", 5));
        dados.add(new Dado("Jose", 1));
        Collections.sort(dados, Dado.COMPARATOR);
    }
}

class Dado {
    final String nome;
    final int dispositivo;

    public Dado(String nome, int dispositivo) {
        this.nome = nome;
        this.dispositivo = dispositivo;
    }

    static final Comparator<Dado> COMPARATOR = new DadoComparator();

    private static class DadoComparator implements Comparator<Dado> {
        @Override
        public int compare(Dado lhs, Dado rhs) {
            int cmpNome = lhs.nome.compareTo(rhs.nome);
            if (cmpNome != 0)
                return cmpNome;
            else
                return Integer.compare(lhs.dispositivo, rhs.dispositivo);
        }
    }
}

resolvido

Obrigado lvbarbosa

abc

Java 8:

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Dado> dados = new ArrayList<>();
        dados.add(new Dado("Evandro", 7));
        dados.add(new Dado("Jose", 5));
        dados.add(new Dado("Evandro", 5));
        dados.add(new Dado("Jose", 1));
        Comparator<Dado> comparator = Comparator
                .<Dado, String>comparing(dado -> dado.nome)
                .thenComparingInt(dado -> dado.dispositivo);
        List<Dado> ordenada = dados.stream()
                .sorted(comparator)
                .collect(Collectors.toList());
    }
}

class Dado {
    final String nome;
    final int dispositivo;

    public Dado(String nome, int dispositivo) {
        this.nome = nome;
        this.dispositivo = dispositivo;
    }
}

Java 8 possui estes métodos padrão

Ex:

List objetos=new ArrayList<>();

demais Códigos
// para inverter a ordem inverte o p1 e p2

objetos.sort((p1,p2)->{
integer retorno=p1.getParametro1().compareTo(p2.getParametro1());//Long, Integer, Date entre outros
if(retorno==0){// se for igual
return p1.getParametro2().compareTo(p2.getParametro2());
}
return retorno;
}

1 curtida

A implementação mencionada é interessante pois ajuda bastante na redução de linhas de código.
Considerando a agumentação de @Dinho_Zanatta_Br, com o devido reconhecimento às instruções de @lvbarbosa apresento outra alternativa de codificação:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Contato {

    private final String nome;
    private final int numero;

    public Contato(String nome, int numero) {
        this.nome = nome;
        this.numero = numero;
    }

    public static void main(String[] args) {
        List<Contato> contatos = new ArrayList<>();
        //adicionando itens à coleção
        Collections.addAll(contatos, new Contato("Evandro", 7), new Contato("Jose", 5), new Contato("Evandro", 5), new Contato("jose", 1));
        
        //implementação da comparação vide http://blog.caelum.com.br/o-minimo-que-voce-deve-saber-de-java-8/     
        contatos.sort(Comparator.comparing((contato) -> contato.nome+contato.numero));
        //visualisando o resultado
        contatos.forEach((dado) -> {
            System.out.println(dado.nome + " " + dado.numero);
        });
    }
}