Há algum método que ordene um HashMap em ordem alfabética, ou algum que facilite a minha vida?
hash.put(rs.getString(1), rs.getInt(2));
Quero ordenar as Strings!
Há algum método que ordene um HashMap em ordem alfabética, ou algum que facilite a minha vida?
hash.put(rs.getString(1), rs.getInt(2));
Quero ordenar as Strings!
Tente assim:
Set set = hash.keySet();
String [] strings = (String []) set.toArray(new String[0]);
// fiat lux!
Arrays.sort(strings);
Obs.: não testei o código
HashMap não é ordenado?
use TreeMap então
Bem…na real o buraco é mais em baixo!
Eu tenho um ArrayList de Strings e precisava ordenar um HashMap de acordo com essa sequencia de Strings:
array.add("Matheus");
array.add("Ana");
array.add("Jorge");
hash.put("Ana",18);
hash.put("Matheus,19);
hash.put("Jorge, 15);
Preciso ordenar esse HashMap agora…algém tem uma idéia simples de implementação?
Olá mdtorbis,
Talvez você desconheça como funciona um hash map (vá lá, eu também não sei muita coisa, hehehe).
Sem muito rigor, ele é uma estrutura de dados que armazena pares chave-valor tentando alcançar o tempo ideal de busca O(1) dos arrays. Para isso, ele usa o método hashcode do objeto para gerar uma chave numérica para cada elemento armazenado e que idealmente seria um índice de um array interno do mapa. Mas gerar um valor hash de um objeto traz a possibilidade de colisão (dois objetos gerando o mesmo hash), por isso, na prática, os hash maps têm uma estrutura de “baldes” e lógica de solução de colisões, degradando o santo graal O(1).
Talvez seja possível ordenar as chaves sobrescrevendo hashcode cuidadosamente. Caso isso seja feito, lembre-se que o método equals deve refletir essas mudanças.
Não terão valores repetidos com certeza =) isso que eu fiz foi só um exemplo…e sei como funcionam as estruturas qe estou usando…só não sei como fazer esta ordenação que citei =/
Mas obrigado pela ajuda
cara
tenta usar o metodo KeySet() para retornar um Set
depois use o metodo toArray() de set para pegar o array
depois tente ordenar pelo metodo Sort da classe Arrays… e passe o parametro o array que vc objteve pelo map e pelo set
se precisar use a classe comparator
sera que nao da assim ?
[]'s
Tenta o método TreeMap. Veja um exemplo no código abaixo :
package br.com.brasil.alanjavanet;
import java.util.*;
public class PrecosCursos {
public static void main(String[] args) {
HashMap<String,Integer> preCurso=new HashMap<String,Integer>();
preCurso.put("JSE", 190);
preCurso.put("JEE", 380);
preCurso.put("JME", 280);
preCurso.put("EJB", 240);
preCurso.put("JSTL", 90);
preCurso.put("JSF", 170);
preCurso.put("JSP", 120);
Iterator j=preCurso.keySet().iterator();
while(j.hasNext()){
String curso=(String)j.next();
int preco=(int)preCurso.get(curso);
System.out.println(curso + ":" + preco);
}
System.out.println("-------------------------");
TreeMap treePreCurso=new TreeMap(preCurso);
Iterator k=treePreCurso.keySet().iterator();
while (k.hasNext()){
String curso=(String)k.next();
int preco=(int)preCurso.get(curso);
System.out.println(curso + ":" + preco);
}
}
}