ArrayList Java Números Repetidos

Ola pessoal, Aguem poderia me ajudar?
Estou fazendo uma função em JAVA para imprimir as de vezes que um números se repete no Arraylist, até então tudo certo, o problema e que tenho que fazer com que ele imprima assim:

Ex: Número do Array: [1,7,7,2,2,2,4,5,]

"Repeticões numero 1: 1 vezes"

"Repeticões numero 7: 2 vezes"

"Repeticões numero 2: 3 vezes"

"Repeticões numero 4: 1 vezes"

"Repeticões numero 5: 1 vezes"

mas ele esta imprimindo dessa forma:

Ex: Número do Array: [1,7,7,2,2,2,4,5,]

"Repeticões numero 1: 1 vezes"

"Repeticões numero 7: 2 vezes"

"Repeticões numero 7: 2 vezes"

"Repeticões numero 2: 3 vezes"

"Repeticões numero 2: 3 vezes"

"Repeticões numero 2: 3 vezes"

"Repeticões numero 4: 1 vezes"

"Repeticões numero 5: 1 vezes"

segue o codigo para analise.

public void Repetidos(Vetor vet){

    Collections.sort(vet.getVetor()); // Ordena o Array na ordem crescente
    
    int num = 0;
    int cont = 0;
    int aux = vet.getRol(); // Quantidade que o usuario digita
    
    for (i=0; i<aux; i++) // Cria o laço do tamanho do Array
    {
        cont = 0; //zera o contador para nova contagem.
        
        for (int j=0; j<aux; j++)// Cria o laço do tamanho do Array
        {
            if (vet.getVetor().get(i) == vet.getVetor().get(j)) // Verifica se os números se repetem
            {
                cont++; //conta o numero de repetição de cada numero
            }
        }
        System.out.println("\n Repeticões numero " + vet.getVetor().get(i) + ": " + cont + " vezes"); // imprime na tela o resultado
   }
}

Você pode usar uma mapa pra isso:

import java.util.LinkedHashMap;
import java.util.Map;

public class TesteSet {

	public static void main(String[] args) {
		// Insere as chaves na ordem
		int numeros[] = { 1, 7, 7, 2, 2, 2, 4, 5 };
		repetidos(numeros);
	}

	private static void repetidos(int[] numeros) {
		Map<Integer, Integer> mapa = new LinkedHashMap<>();

		for (int n : numeros) {
			// Se já existir no mapa, incrementa o contador
			if (mapa.get(n) != null) {
				mapa.put(n, mapa.get(n) + 1);
				// Se não existir, inicializa
			} else {
				mapa.put(n, 1);
			}
		}

		for (Map.Entry<Integer, Integer> entry : mapa.entrySet()) {
			System.out.println(String.format("Repeticões numero %d: %d vezes.", entry.getKey(), entry.getValue()));
		}
	}
}

Abcs!

Vc baixou isso de algum lugar?
A saída que vc postou não é produzida pelo código informado.

Mas vamos lá assim mesmo. Não entenda como arrogância, e sim como uma boa dica. Das próximas vezes que você sentar para progamar esqueça que existe a estrutura de dados array. Ela é fundamental pra bilhões de problemas, mas uma estrutura de dados que eu acho mais importante para o dia a dia é uma hash table. Muitos desenvolvedores esquecem dessa estrutura e é por isso que eu falei pra você esquecer arrays por um tempo, pra ver se você fixa na mente que hash tables fazem bem ao seu código. (Mas não esqueça completamente os arrays eles são fundamentais)

Bom, em Java uma interface que sugere que exista uma estrutura tipo hash table é java.util.Map. Sendo assim, um código exemplo para seu problema está abaixo. A implementação de Map utilizada foi o TreeMap, com essa implementação você terá, “de graça”, a ordenação da saída:

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

/**
 *
 * @author leomcabral
 */
public class Teste {

    public static void main( String[] args ) {
        List<Integer> ints = Arrays.asList(new Integer[] {1,7,7,2,2,2,4,5});

        Map<Integer, Integer> m = new TreeMap<>();

        for ( Integer val : ints) {
            if (!m.containsKey(val)) {
                m.put(val, 0);
            }
            m.put(val, m.get(val) + 1);
        }

        for ( Map.Entry<Integer, Integer> entry : m.entrySet()) {
            System.out.println("Repeticoes numero " + entry.getKey() + " : " + entry.getValue());
        }
    }

}

Se ela é fundamental, não faz muito sentido esquecer que ela existe :wink:

List<Integer> ints = Arrays.asList(new Integer[] {1,7,7,2,2,2,4,5});

Se o array está sendo usado apenas para preencher o mapa, não seria necessário convertê-lo pra List, certo(por causa do autoboxing)?

Pois é @hlucasfranca, acho que vc não leu tudo o que escrevi, mas tudo bem. Falei pra ele esquecer por enquanto. Pra dar uma atenção a mais outras estruturas de dados. Nem tudo se resolve com arrays simples (listas inclusas aqui).

Isso é mania minha, tenho um template no NetBeans que gera esse tipo de linha e acabo usando sem pensar :slight_smile:
Poderia ter usado um array primitivo no enhanced for. Mas para alinhar com a entrada do método da questão larguei o LIst ali mesmo.
E, sim, o autoboxing é feito para inserção no map.

Muito Obrigado pela Ajuda e as dicas :smiley:
Eu que escrevi os códigos, no caso da saída foi só um exemplo, os dados do meu ArrayList estão vindo da Classe Principal Digitada pelo usuário.
Infelizmente o portal não me permitiu enviar o arquivo, mas irei cola-lo aqui.
1.P.S.: achei muito bom a Ideia do hash table, :frowning: , só que eu ainda não sei usar (rsrs) mas vou da uma pesquisada aqui, :thumbsup:
2.P.S.: o que seria esse “containsKey”

Classe Principal:
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class teste {

public static void main( String[] args ) {
    List<Integer> ints = Arrays.asList(new Integer[] {1,7,7,2,2,2,4,5});

    Map<Integer, Integer> m = new TreeMap<>();

    for ( Integer val : ints) {
        if (!m.containsKey(val)) {
            m.put(val, 0);
        }
        m.put(val, m.get(val) + 1);
    }

    for ( Map.Entry<Integer, Integer> entry : m.entrySet()) {
        System.out.println("Repeticoes numero " + entry.getKey() + " : " + entry.getValue());
    }
}

}

classe Vetor:

package Beans;

import java.util.ArrayList;

public class Vetor {

private int rol;
private ArrayList vetor;

public int getRol() {
    return rol;
}

public void setRol(int rol) {
    this.rol = rol;
}   

public ArrayList getVetor() {
    return vetor;
}

public void setVetor(ArrayList vetor) {
    this.vetor = vetor;
}

}

é só um método de Map que verifica se o valor passado como parâmetro está no Map