como retornar um dado de um hashMap, que método eu uso??
como faço uma comparação com uma variavel, para saber se a mesma é igual a chave do hashmap?
por exemplo:
int x = Integer.parseInt(JOptionPane.showInputDialog("Coloque o código da compra: "));
HashMap hm = new HashMap;
for(int i =0; i< hm.size();i++)
{
if(x == hm.get(i)) // aqui esta o erro, não retorna nada!
{
return //continua....
}
}
não retorna nada porque você não colocou nada no mapa,
e para pegar valores de mapa não precisa de laço, é só você saber qual foi a chave que você colocou nele,
Prezado amigo! Evite repetir tópicos para não causar confusão e dar trabalho até a você mesmo!
Como o colega acima falou, você não colocou nenhum valor no mapa, não há o que imprimir!
Atenciosamente,
MaLSan
Eu ja coloquei valores no hashmap, só que nao detalhei o código inteiro, por exemplo este metodo é só para compara o que o usuario digita, e se tiver no hash, ele retorna…
eu preenchi o hashmap com uma string proveniente de uma concatenação de ArrayList, e a sua chave é randômica!
sera que tem algum problema??
exemplo:
String s ="";
for(int i=0; i< array.size();i++)
{
s = array.get(i)+"\n";
}
hm.put(codrandom,s);
Amigo, você AINDA NÃO entendeu o que é um HashMap.
Você normalmente não varre um HashMap (com um “for”) para procurar alguma coisa dentro dele. Sacou? O “for” é para procurar coisas dentro de um ArrayList ou de um array, não dentro de um HashMap.
Para saber se um HashMap contém alguma coisa, use o método “containsKey”. Se ele retornar false, então a tal chave não existe.
Uma outra forma de procurar algo dentro de um HashMap é usar o método “get”. Se ele retornar null, então a chave não existe.
O problema não é Java, é Estruturas de Dados!!!
Num Mapa você acondiciona pares de Chave e Valor, depois, passa uma chave para receber o valor correspondente!
Que quis dizer com “chave randômica”!!! Você gera as chaves randômicamente!!! Por que!!!
Quem te garante que não vai gerar duas vezes a mesma chave e sobrescrever o valor?!!!
Publica aí mais claramente o que você quer saber que a galera deve solucionar!
Atenciosamente,
San
É Java básico, companheiro! Não tão básico quanto um Hello world, mas báisco…
Entretanto, não se apoquente. Por vezes aprendemos uma série de coisas sofisticadas antes de conhecermos um ou outro detalhe fundamental!
Quando precisar, é só contar com a ajuda da galera do GUJota!!!
Atenciosamente,
San
Eu acho que é básico. Todo programador Java deve conhecer e saber como se usam* pelo menos as seguintes classes e interfaces do Java Collections Framework:
Note que não estou listando “LinkedList” - na prática você vai achar poucos usos para LinkedList. E não menciono “Vector” ou “Hashtable” porque dentro da medida do possível você deve usar, respectivamente, ArrayList e HashMap.
Não estou falando em “decorar o javadoc” - assim como você não usa mais lápis e papel para fazer contas, você não precisa decorar o javadoc, basta tê-lo sempre disponível. Consigo programar sem uma IDE (Eclipse ou NetBeans), mas não consigo programar sem o JavaDoc.
** Se for estudar para uma prova de certificação, não se esqueça de “PriorityQueue”, “Deque” e “Stack”.
public class Dados{
//"args" é um array de String onde cada elemento é um argumento passado pela linha de comando momento na "inicialização" da execução.
public static void main(String[] args){
Map<Integer, List<String>> mapLines= new HashMap<Integer, List<String>>();
try {
//leitura do ficheiro, prepara-o para ser aberto
BufferedReader in = new BufferedReader(new FileReader("conteudo.txt"));
String str;
int i = 0;
//vai percorrer todo o ficheiro
while((str = in.readLine()) != null)
{
if(str.startsWith("#"))
{
str= "";
}
else{ //esta a dividir a frase em varias strings imprimindo o seu resultado
List<String> values = new ArrayList<String>();
String words[] = str.split(";");
for(String word : words) {
values.add(word);
System.out.println(word);
}
mapLines.put(i, values);
i++;
}
}// fim do while
in.close();
} catch (IOException e){
// possiveis erros são tratatos aqui
//JOptionPane.showMessageDialog(null, this.word, "NÂO FOI POSSÍVEL ABRIR O SEU FICHEIRO", JOptionPane.ERROR_MESSAGE);
System.out.println("ERRO-->NÃO FOI ENCONTRADO O SEU FICHEIRO DE DESTINO,TENTE DE NOVO");
}
// Apresenta o contéudo do Map
Map<Integer, List<String>> m = new HashMap<Integer, List<String>>();
for(Integer key : m.keySet()) {
for(String word : m.get(key)) {
System.out.println(word);
}
}
}
public static void main2(String[] args){
Map<Integer, List<String>> mapLines= new HashMap<Integer, List<String>>();
try {
BufferedReader in2 = new BufferedReader(new FileReader("conteudo2.txt"));
String str;
int i = 0;
while((str = in2.readLine()) != null)
{
if(str.startsWith("#"))
{
str= "";
}
else{ //esta a dividir a frase em varias strings
List<String> values = new ArrayList<String>();
String words[] = str.split(" ");
for(String word : words) {
values.add(word);
System.out.println(word);
}
mapLines.put(i, values);
i++;
}
}// fim do while
in2.close();
} catch (IOException e){
// possiveis erros são tratatos aqui
System.out.println("ERRO-->NÃO FOI ENCONTRADO O SEU FICHEIRO DE DESTINO,TENTE DE NOVO");
}
// Apresenta o contéudo do Map
Map<Integer, List<String>> m = new HashMap<Integer, List<String>>();
for(Integer key : m.keySet()) {
for(String word : m.get(key)) {
System.out.println(word);
}
}
}
} [/code]
[quote=thingol]Amigo, você AINDA NÃO entendeu o que é um HashMap.
Você normalmente não varre um HashMap (com um “for”) para procurar alguma coisa dentro dele. Sacou? O “for” é para procurar coisas dentro de um ArrayList ou de um array, não dentro de um HashMap.
Para saber se um HashMap contém alguma coisa, use o método “containsKey”. Se ele retornar false, então a tal chave não existe.
Uma outra forma de procurar algo dentro de um HashMap é usar o método “get”. Se ele retornar null, então a chave não existe.
[/quote]
Pode não ser uma boa prática mas é possível sim, se você quiser apresentar todos os registro de um Map, você poder utilizar o código abaixo:
[code] Map<Integer, String> reg = new TreeMap<Integer, String>();
obrigado… mas nao sei como encaixar no código…eu pus e ele no fim assim
[code]…
in2.close();
} catch (IOException e){
// possiveis erros são tratatos aqui
System.out.println(“ERRO–>NÃO FOI ENCONTRADO O SEU FICHEIRO DE DESTINO,TENTE DE NOVO”);
}
// Apresenta o contéudo do Map
Map<Integer, List> m = new HashMap<Integer, List>();
for(Integer key : m.keySet()) {
for(String word : m.get(key)) {
System.out.println(word);
}
}
}
public static void main3(String[] args){
Map<Integer, String> reg = new HashMap<Integer, String>();