Você está aqui: Java ::: Pacote java.util ::: ArrayList |
Java Avançado - Como ordenar uma ArrayList em ordem crescente de elementos repetidosQuantidade de visualizações: 2633 vezes |
Em algumas situações nós gostaríamos de ordenar uma List (uma ArrayList, por exemplo) em ordem crescente ou decrescente baseado no número de vezes que um determinado elemento se repete. Este é um exercício interessante, pois mostra como podemos combinar a interface List, a classe ArrayList, a interface Map, a classe HashMap e ainda o método sort() da classe Collections. Nosso objetivo é ordenar um vetor de inteiros contendo alguns elementos repetidos, de forma que o resultado final seja algo como: 2, 3, 4, 6, 50, 9, 9, 7, 7, 7 Veja o código completo para o exemplo. Note como pedimos para o usuário informar 10 valores inteiros e depois os ordenamos por ordem crescente de quantidade de repetições dos elementos (elementos com menos repetições vêm primeiro): ---------------------------------------------------------------------- Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar) Este código foi útil? Paga um cafezinho pra mim :-( PIX: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; import java.util.*; public class Estudos{ public static void main(final String[] args) { // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // uma list de inteiros List<Integer> valores = new ArrayList(); // vamos pedir para o usuário informar 10 valores inteiros for(int i = 0; i < 10; i++){ System.out.print("Informe um valor inteiro: "); // vamos adicionar este valor à lista valores.add(Integer.parseInt(entrada.nextLine())); } // agora criamos um Map para contar as repetições Map<Integer, Integer> quants = new HashMap(); // e percorremos todos os elementos da segunda lista for(Integer item : valores){ Integer quant = quants.get(item); // este valor está no mapa? if(quant == null) { quant = 1; } else { quant++; } // colocamos ou ajustamos este item no mapa quants.put(item, quant); } Collections.sort(valores, new Comparator<Integer>() { @Override public int compare(Integer a, Integer b) { // lógica para ordenar pela quantidade de repetições int res = quants.get(a) - quants.get(b); // ou pelo valor dos elementos if(res == 0){ res = a - b; } return res; } }); // mostra o vetor já ordenado System.out.println(valores); } } Ao executarmos este código Java nós teremos o seguinte resultado: Informe um valor inteiro: 9 Informe um valor inteiro: 9 Informe um valor inteiro: 4 Informe um valor inteiro: 2 Informe um valor inteiro: 50 Informe um valor inteiro: 7 Informe um valor inteiro: 3 Informe um valor inteiro: 7 Informe um valor inteiro: 7 Informe um valor inteiro: 6 [2, 3, 4, 6, 50, 9, 9, 7, 7, 7] |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
PHP - Como obter o caminho da raiz do site usando a variável global $_SERVER['DOCUMENT_ROOT'] do PHP |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |