Arraylist

oi tava programando em java quando me surgiu uma duvida:
no programa tenho de dado uns 100 valores fazer um histograma simples da distribuição desses valores tipo: numero 10 calhou 7 vezes…
os valores são entre 0 e 255. eu tentei resolver este problema metendo rudo em uma ArraList ficando deste modo:

ArrayList x = new ArrayList();

x.set(numero,x.get(numero)+1);

em que que cada posição da arraylist servia para o mesmo numero e cada vez que que calhava esse numero ele ia incrementar uma unidade, mas tá dando erro…se voces conseguirem encontrar o erro ou arranjar uma solução agradecia…

postem aí qlq coisa…

obrigado

Eu faria usando Map… mais ou menos dessa forma:

		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
		
		for(int i = 0; i < 100; i++) {
			int num = Double.valueOf(Math.random() * 10).intValue();
			Integer vezes = map.remove(num);
			if(vezes == null)
				vezes = 1;
			else
				vezes++;
			map.put(num, vezes);
		}
		
		
		for(Integer num : map.keySet()) {
			System.out.println("Numero " + num + " foi sorteado " + map.get(num) + " vezes");
		}

oi luBS

é o seguinte:

eu tava tentando com o arraylist pois map eu não entendo bem ainda, e tou tentando implementar este pedaço de código(histograma simples), num metodo que recebe valores de outra class e adiciona esses valores a uma arraylist…será que vc consegue descobrir meu erro no pedaço de codigo?

obrigado pela rapida resposta…Vlw

[quote=“tuga50”]oi luBS

é o seguinte:

eu tava tentando com o arraylist pois map eu não entendo bem ainda, e tou tentando implementar este pedaço de código(histograma simples), num metodo que recebe valores de outra class e adiciona esses valores a uma arraylist…será que vc consegue descobrir meu erro no pedaço de codigo?

obrigado pela rapida resposta…Vlw[/quote]

Seu problema ocorre porque vc naum tem a posicao “numero” no arraylist

testa isso:

		List<Integer> l = new ArrayList<Integer>();
		l.set(20, 1);

Não tem posição 20, então da IndexOutOfBoundsException, os ArrayList crescem a medida que vc adiciona elementos dentro deles… não pode setar ou adicinar elementos numa posição maior que o tamanho deles… o que vc pode fazer (xunxo) eh iniciar 250 posicoes com 0 no array, no inicio do seu programa… soh que eh uma solucao palha, bem palha hehe

pois era isso…

mas cheguei à conclusão que não era preciso usar arraylist então usei um array de inteiros inicializado a zero que só ia incrementando quando o numero calhava…

obrigado na msm …