Ordenar coleção

5 respostas
wd.silva

Alguem me ajudar a inserir um comando que imprima em ordem alfabética o código a seguir:

package aulaa5;

import java.util.*;

public class PrecosCursos {

public static void main(String[] args) {

	HashMap<String, Double> mapa = new HashMap<String, Double>();
	mapa.put("JSE", 190.00);
	mapa.put("JEE", 380.00);
	mapa.put("JME", 280.00);
	mapa.put("EJB", 240.00);
	mapa.put("JSTL", 90.00);
	mapa.put("JSF", 170.00);
	mapa.put("JSP", 120.00);
	

	System.out.println("Lista ordenada por nome de cursos****");

	
	Iterator i = mapa.keySet().iterator();
	while (i.hasNext()) {
		String curso = (String) i.next();
		double preco = mapa.get(curso);
		System.out.println(curso + " : " + preco);
	}
}

}

5 Respostas

F

Brother, Boa Noite !

Você deverá fazer uma sobrecarga do método Comparator e utilizar o método Collections.sort(suaColecao, sobreCargaComparator);.

Dê uma pesquisada sobre, aqui no GUJ têm vários exemplos prontos.

Abraços,

Migore

Uma outra alternativa:

O truque ta na linha 5 ali.

public class Mapeando {

	public static void main(String[] args) {

		SortedMap<String, Double> mapa = new TreeMap<String, Double>();
		
		mapa.put("JSE", 190.00);
		mapa.put("JEE", 380.00);
		mapa.put("JME", 280.00);
		mapa.put("EJB", 240.00);
		mapa.put("JSTL", 90.00);
		mapa.put("JSF", 170.00);
		mapa.put("JSP", 120.00);
				
		Iterator i = mapa.keySet().iterator();
		while (i.hasNext()) {
			String curso = (String) i.next();
			double preco = mapa.get(curso);
			System.out.println(curso + " : " + preco);
		}
	}

}
R
Mignore achei interessante usar o SortedMap... Resolvi mexer no código também mas só mudei o Iterator para um for each... vantagem é puramente sintática.
public class Mapeando {

	public static void main(String[] args) {

		SortedMap<String, Double> mapa = new TreeMap<String, Double>();
		
		mapa.put("JSE", 190.00);
		mapa.put("JEE", 380.00);
		mapa.put("JME", 280.00);
		mapa.put("EJB", 240.00);
		mapa.put("JSTL", 90.00);
		mapa.put("JSF", 170.00);
		mapa.put("JSP", 120.00);
				
		for(String t : mapa.keySet()){
			System.out.println(t + " : "+mapa.get(t));
		}
	}

}
wd.silva

Valeu galera pela ajuda, estou começando e como era previsto vou apanhar muito às vezes por bobeiras. Com a ajuda de vocês vou chegar lá.

Obrigado

JMan

Vc não disse se queri ordenar pela chave ou pelo valor, então ordenei pela chave, veja:

package teste;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

public class PrecosCursos {

	public static void main(String[] args) {

		HashMap<String, Double> mapa = new HashMap<String, Double>();
		mapa.put("JSE", 190.00);
		mapa.put("JEE", 380.00);
		mapa.put("JME", 280.00);
		mapa.put("EJB", 240.00);
		mapa.put("JSTL", 90.00);
		mapa.put("JSF", 170.00);
		mapa.put("JSP", 120.00);

		System.out.println("Lista ordenada por nome de cursos****");
		
		List keys = new ArrayList(mapa.keySet());
		
		Collections.sort(keys,
		new Comparator() {
			public int compare(Object left, Object right) {
				String leftKey = (String) left;
				String rightKey = (String) right;
				return leftKey.compareTo(rightKey);
			}
		});
		
		 
		Iterator i = keys.iterator();
		while (i.hasNext()) {
			String curso = (String) i.next();
			double preco = (double)mapa.get(curso);
			System.out.println(curso + " : " + preco);
		}
	}
}

[]'s

Criado 16 de julho de 2008
Ultima resposta 16 de jul. de 2008
Respostas 5
Participantes 5