Opa, estou estudando sobre map, e implementando um código:
[code]import java.util.Iterator;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
public class Escore implements Comparable{
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;
}
}[/code]
[code]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());
}
}
[/code]
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:[code]
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();
}}
[/code]
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);
}
[code]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));
}
}[/code]
agora estou tentando fazer a funcao pesquisa:[code]public Set pesquisar(Escore e){
Set retorno = new TreeSet();
Set perco= Lugar.keySet();
for(Escore r : perco){
retorno.add(e);
}
return retorno;
}
}[/code]
essa funcao era pra quando eu colocasse um Escore(campos = pontuacao e nome);
entao ela ia pesquisar no map e retornar o valor map
[code] 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());
}
}
} [/code]
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.
não entendi e se eu quiser exibir a chave e o valor com o iterator como faço ?
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
Isso mesmo, a intenção é ordenar tudo…
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.