ArrayLists

5 respostas
biguz

Alo pessoal, sou novo neste forum, e tambem dgms iniciante em java…

Alguem poderia ajudar-m com um metodo que recebe uma lista de numeros inteiros pdendo estar eles reptdos

ex: 1,2,2,2,3,1,4,5

Devendo o metodo ordenar tais numeros e retornar o nr de vezes que cada nr na lista se repete, devendo garantr que apos comparado um nr nao voltara a ser comparado!!

[color=green]import java.util.ArrayList;
import java.util.Collections;

public class Aud {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	ArrayList<Integer> numeros = new ArrayList<Integer>();
	numeros.add(1);
	numeros.add(2);
	numeros.add(3);
	numeros.add(1);
	numeros.add(3);
	Collections.sort(numeros);

	for (int j = 0; j < numeros.size(); j++) {

		int cont = 0;

		for (int i = 0; i < numeros.size(); i++) {
			if (numeros.get(j).equals(numeros.get(i))) {
				cont++;

			}
		}
		System.out.println(numeros.get(j) + "   Aparece  " + cont
				+ "   vezes");

	}
}

}[/color]

esse foi o meu trecho de codigo na tentativa de resolver tal questao, mas nao foi nada satisfatorio.

5 Respostas

heroijapa
  1. vc bem que podia dar uns tabs nesse código pra melhorar a legibilidade dele

  2. vc pode criar uma segunda lista para adicionar os números que você já imprimiu e se o número estiver naquela lista você náo imprime mais.

intao

for(bla bla)
{
    for(bla bla)
    {
        if(bla bla)
           count ++;

    }
    if (!listaUsados.contains(xpto(j)))
    {
         print()
         listaUsados.add(xpto(j));
    }
}
lina

Oi,

Vou postar um código que poderá lhe ajudar:

public void ValoresRepetidos(int[] an_numeros) {
		Set<Integer> an_novos_numeros =	new TreeSet<Integer>();
		
		for (int numero : an_numeros) {
			if (!an_novos_numeros.add(Integer.valueOf(numero))) {
				System.out.println("Número repetido: "+numero);
			}
		}
	}

Note que criamos um método ValoresRepetidos() que aceita um vetor de inteiros como parametro.

Chame-o assim:

ValoresRepetidos(new int[]{1,2,3,4,5,6,1,2,3,6,6});

1- O método foi criado
2- Utilizei um vetor de inteiros e não um ArrayList
3- Não ordenei os valores
4- Não contei a quantidade de vezes que o número se repete e sim mostrei quem se repete.

Tchauzin!

henriqueluz
Pelo que entendi é mais ou menos isto que queres:
//Sua lista de numeros
		List<Integer> numeros = new ArrayList<Integer>();
		//Lista auxiliar
		List<Integer> lista = new ArrayList<Integer>();
		//Lista de Frequencia de cada numero
		List<Integer> listaDeFrequencias = new ArrayList<Integer>();
		
		//Inicializando lista de numeros
		numeros.add(2);
		numeros.add(1);
		numeros.add(3);
		numeros.add(4);
		numeros.add(5);
		numeros.add(1);
		numeros.add(2);
		//Ordenando sua lista numeros
		Collections.sort(numeros);
		
		int i = 0;
		while(i < numeros.size()){
			if(!lista.contains(numeros.get(i))){
				//Adiciona numeros nao repetidos na nova lista
				lista.add(numeros.get(i));
				
			}
			i++;
		}
		
		//Preenche lista com as frequencias de cada numero que esta na lista "numeros"
		for (Integer numero : lista) {
			listaDeFrequencias.add(Collections.frequency(numeros, numero));
		}
		
		//Saida
		System.out.println(numeros);

		System.out.println(lista);
		System.out.println(listaDeFrequencias);
Saída: [1, 1, 2, 2, 3, 4, 5] [1, 2, 3, 4, 5] [2, 2, 1, 1, 1]

Abs ;)

gabiso
ArrayList numeros = new ArrayList();
		numeros.add(new Integer(1));
		numeros.add(new Integer(2));
		numeros.add(new Integer(3));
		numeros.add(new Integer(1));
		numeros.add(new Integer(3));
		Collections.sort(numeros);
		
		for (Iterator it = new HashSet(numeros).iterator(); it.hasNext();) {
			Integer num = (Integer) it.next();
			System.out.println( num + " " + Collections.frequency(numeros, num));
		}
biguz

Sendo assim amigos criei este codigo, felizmente consigui ter um resultado satisfatorio.

Analisem e digam-me algo

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

		numeros.add(1);
		numeros.add(2);
		numeros.add(3);
		numeros.add(1);
		numeros.add(3);
		numeros.add(2);
		numeros.add(2);
		numeros.add(2);
		numeros.add(2);
		numeros.add(1);
		numeros.add(1);
		numeros.add(2);

		Collections.sort(numeros);

		Set<Integer> set = new HashSet<Integer>();

		for (int j = 0; j < numeros.size(); j++) {

			int cont = 0;

			for (int i = 0; i < numeros.size(); i++) {

				if (numeros.get(j).equals(numeros.get(i))) {
					cont++;

				}

			}
			if (!set.contains(numeros.get(j))) {
				System.out.println(numeros.get(j) + "   Aparece  " + cont
						+ "   vezes");
				set.add(numeros.get(j));

			}

		}

sendo assim, alguem poderia apresentar algo igual usando Maps?

Saudacoes

Criado 25 de agosto de 2011
Ultima resposta 30 de ago. de 2011
Respostas 5
Participantes 5