Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Java ::: Pacote java.util ::: ArrayList

Java Avançado - Como ordenar uma ArrayList em ordem crescente de elementos repetidos

Quantidade 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]

Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 28 usuários muito felizes estudando em nosso site.