Coleções - MAp

8 respostas
R
Opa, estou estudando sobre map, e implementando um código:
import java.util.Iterator;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;


public class Escore implements Comparable<Escore>{
	private String nome;
	private int pontuacao;
	
	public Escore (){
		this(null,0);
	}
	public Escore(String nome,int pontuacao){
		super();
		this.nome = nome;
		this.pontuacao = pontuacao;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getpontuacao() {
		return pontuacao;
	}

	public void setpontuacao(int pontuacao) {
		this.pontuacao = pontuacao;
	}
	public String toString(){
		return ("pontuacao"+pontuacao+"nome"+nome);
	}
	
	public int compareTo(Escore e1) {
		  int diff = e1.pontuacao - pontuacao;  
	        return diff == 0 ? nome.compareTo(e1.nome) : diff; 
		}

	
}
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;


public class Classificacao {
	
	Map<String, Escore> Lugar = new TreeMap<String, Escore>();
	
	
	public void adicionar(String nome,Escore e){
		
		Lugar.put(nome, e);
	}
	public void exibir(){
			
			System.out.println(""+Lugar.keySet()+"e"+Lugar.values());
			
	}
}
Pronto eu quero Adicionar a uma map de Lugares uma String como um nome do lugar e um escore com o nome do piloto e a pontuação dele Só que na hora que eu mando rodar o resultado fica o seguinte: =====[Interlagos, Monaco]e[pontuacao14nomeJoão, pontuacao12nomeRObson] e eu quero que exiba assim na ordem interlagos pontuação 14 nome joão. interlagos pontuação 14 nome robsno monago pontuacao 13 nome joao. ... na ordem alfabética aqui o main:
public class Main {

	public static void main(String[] args) {
		
	
	Classificacao c = new Classificacao();
	c.adicionar("Monaco",new Escore("RObson", 12));
	c.adicionar("Interlagos", new Escore("João",14));
	c.exibir();
}}

8 Respostas

ivo_costa

Troque:

return ("pontuacao"+pontuacao+"nome"+nome);

Por

return ("pontuacao "+pontuacao+" nome "+nome);

E

System.out.println(""+Lugar.keySet()+"e"+Lugar.values());

Por

for(String local : Lugar.keySet()){
     System.out.println(local + " " + Lugar.get(local);
}
R

Deu certo Valeu cara!

R
public void adicionar(Escore e){
		Integer qtd = 0;
		if(Lugar.containsKey(e)){
			qtd = Lugar.get(e);
		}
		qtd ++;
		Lugar.put(e, qtd);
		
		
	}
	public void exibir(){
		for(Escore e : Lugar.keySet()){  
		     System.out.println(e + " " + Lugar.get(e));  
		}
			
	}
agora estou tentando fazer a funcao pesquisa:
public Set<Escore> pesquisar(Escore e){
			Set<Escore> retorno = new TreeSet<Escore>();
			Set<Escore> perco= Lugar.keySet();
			for(Escore r : perco){
				retorno.add(e);
				
				}
			
		
		return retorno;
	}
}

essa funcao era pra quando eu colocasse um Escore(campos = pontuacao e nome);
entao ela ia pesquisar no map e retornar o valor map

C
import java.util.Iterator;  
  import java.util.Map;  
   import java.util.Set;  
   import java.util.TreeMap;  
import java.util.TreeSet;  
     
     
   public class Classificacao {  
         
       Map<String, Escore> Lugar = new TreeMap<String, Escore>();  
         
         
       public void adicionar(String pista,Escore e){  
             
           Lugar.put(pista, e);  
       }  
       public void exibir(){  
                 
    	   Set conjunto = Lugar.entrySet();
   		
   		Iterator i = conjunto.iterator(); 
   		
   		while(i.hasNext()) {
   			int ai=0;
   			Map.Entry me = (Map.Entry)i.next();
   			System.out.print(me.getKey() + ": ");
   			System.out.println(me.getValue());
   		} 
                 
       }  
       
      
   }

deixe o Iterator fazer a iteração por voce.

o nome do Escore nao é a chave .entao coloquei pista que recebe os valore smo naco e interlagos como chaves.

R

não entendi e se eu quiser exibir a chave e o valor com o iterator como faço ?

C

vnao ta para fazer isso pois ele intera apenas os valores no mapa.

nao ententi completamente o seu problema.

a sua intençao é mostrar pista o nome e a pontuação ordenada por pista e conseguentimente por nomes ?

exemplo

pista A nome a pontos 2
pista A nome B pontos 2
pista A nome C pontos 2
pista B nome A pontos 2
pista B nome B pontos 2
pista C nome A pontos 2
pista C nome B pontos 2

R

Isso mesmo, a intenção é ordenar tudo…

C

eu inseri o conceito de modalidades na sua regra de negocio.Essa modalidade se tornou a chave de suas coleções

para fazer essa classificação conforme a duvida que voce levandou no seu ultimo post eu utilizei a interface Collections e seu metodo sort com uma classe local de anonima implementando a Interface Comparator.

Se nao entender alguma coisa manda mensagem.

Criado 6 de junho de 2011
Ultima resposta 7 de jun. de 2011
Respostas 8
Participantes 3