Dúvida ArrayList

6 respostas
paulohms

Boa tarde galera,

Estou tentando pegar os valores mais repetidos de um array list porem não obtive sucessos nas tentativas…

Alguem tem alguma dica para que eu tente fazer ?

Vlw

6 Respostas

Rodrigo_Sasaki

Por que um ArrayList? Por que não usa um HashMap ou algo do tipo?

E

“Os valores mais repetidos…” - dê um exemplo da entrada e da saída esperada do seu programa.
Isso ajuda a organizar as idéias.

paulohms

entanglement,

A idéia é ler um Array ou HashMap com mais de 1000 linhas e mostrar as combinações mais repetidas, por exemplo :

10 15
11 02
55 91
10 15
68 47
25 17
16 80
11 02
10 15
68 47
04 05
11 12
10 15

O resultado seria em ordem de repetimento:
1° 10 15
2° 11 02

E

Você quer organizar os dados lidos em ordem decrescente de repetições?

a) Crie um Map<Integer, Integer> cuja chave seja o número, e cujo valor seja a quantidade de repetições desse número.
Por exemplo, para a entrada 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, você teria o seguinte mapa:
1 -> 2
2 -> 1
3 -> 2
4 -> 1
5 -> 3
6 -> 1
9 -> 1
b) A seguir, crie um SortedMap<Integer, List> cuja chave seja a quantidade de repetições, e cujo valor seja uma lista contendo os números que têm essa mesma quantidade de repetições. Neste caso:
1 -> [2, 4, 6]
2 -> [1, 3]
3 -> [5]
c) Imprima esse SortedMap na ordem inversa. Teríamos:
5 (repetido 3 vezes)
1 (repetido 2 vezes)
3 (repetido 2 vezes)
2 (repetido 1 vez)
4 (repetido 1 vez)
6 (repetido 1 vez)

Como é que você usa SortedMap? O Google é seu amigo :slight_smile:

paulohms

entanglement,

Já ajudou de mais cara, vlw pela dica, assim que eu chegar em casa vou tentar e posto o resultado aqui…

Vlw !

paulohms

entanglement

Cara, cheguei no seguinte código, mais acho que tem muito a melhorar ai… por favor de opiniões para que eu possa realizar as modificações… não utilizei o SortedMap pois estou realizando testes ainda…

public class testando {

	public static void main(String args[]) {

		ArrayList<Integer> resultado = new ArrayList<Integer>();

		resultado.add(25);
		resultado.add(2);
		resultado.add(5);
		resultado.add(2);
		resultado.add(2);
		resultado.add(25);
		resultado.add(25);
		resultado.add(25);
		resultado.add(25);

		int teste;
		int qnt = 0;

		HashMap<Integer, Integer> resultt = new HashMap<Integer, Integer>();

		for (Integer aux : resultado) {

			teste = aux;

			for (Integer aux2 : resultado) {

				if (teste == aux2) {
					qnt++;
				}

			}

			resultt.put(teste, qnt);
			qnt = 0;

		}

		System.out.println(resultt.get(25));
		System.out.println(resultt.get(2));

	}
Criado 18 de março de 2013
Ultima resposta 20 de mar. de 2013
Respostas 6
Participantes 3