Imprimir HasMap

5 respostas
somma

Boa noite Pessoal,

Estou tentando imprimir um Hash do tipo:

HasMap

onde Automato é uma clase com seus setters e getters.

Como eu faço para ver o que foi inserido dentro deste HashMap???

Este é codigo que eu estou trabalhando e o método varredura() é o que eu estou tentando implementar e não consigo?????? O que devo fazer????

package compilador;

import java.util.*;
import compilador.Argumento;
import javax.swing.JOptionPane;

public class Compilador{

    HashMap<String,Argumento> mapaCadeias;
    
    Argumento argumento = new Argumento();
    
    ManipArquivo mArq = new ManipArquivo();  
    
    Automato automato = new Automato();   

    String cadeia = "";
    
    String tipoCadeia = "";

    public Compilador() {
            mapaCadeias = new HashMap<String,Argumento>();
    }

    public void compilar(String caminho) {
            // Lê o arquivo texto pra um HashMap
            HashMap linhaLida = mArq.lerArquivo(caminho);

            for (int numLinha = 0; numLinha < linhaLida.size(); numLinha++){

                // Recupera o texto linha a linha
                String textoLinha = (String) linhaLida.get(numLinha);
                
                 // Passamos o texto para Tokenizer para ser lido palavra por palavra
                StringTokenizer st = new StringTokenizer(textoLinha);               

                while (st.hasMoreTokens()){     
                                        
                    cadeia = st.nextToken();
                    
                    tipoCadeia = automato.reconhecerCadeia(cadeia);
                    
                    argumento.setCadeia(cadeia);
                    argumento.setIdentificador(tipoCadeia); 
                   //argumento.setQuantidade(1); 
                    argumento.setLinhasOcorrencia(numLinha+1);
                    
                    mapaCadeias.put(cadeia, argumento);
                    
                }
          }
            
   }
    
   public void varredura(){
        System.out.println(mapaCadeias.get(automato));
       // System.out.println(mapaCadeias.values()); //Aqui pega o endereço de memória
  }
               
}

5 Respostas

Adolfo_Rodrigues

Você precisa sobrescrever o método equals() da classe que quer “imprimir”.

Editado - Desculpe, escrevi errado o nome do método. Correção:

Você precisa sobrescrever o método toString() da classe que quer “imprimir”.

somma

Como assim sobrescrever o método equals()???

Nao entendi

Adolfo_Rodrigues

Olha um exemplo simples:

package exemplos.guj;

public class ClasseDemo {
		
	public String atributoA; 
	public String atributoB;
	
	public ClasseDemo(String atrA, String atrB) {
		this.atributoA = atrA;
		this.atributoB = atrB;
	}
	
	//Aqui está a sobrescrita do método toString
	public String toString() {
		StringBuffer sb = new StringBuffer();
		sb.append("Valor do atributoA = ");
		sb.append(this.atributoA);
		sb.append("\n");
		sb.append("Valor do atributoB = ");
		sb.append(this.atributoB);
		return sb.toString();
	}

}
package exemplos.guj;

public class ClasseTeste {
	
	public static void main(String[] args) {
		ClasseDemo demo1 = new ClasseDemo("1", "2");
		ClasseDemo demo2 = new ClasseDemo("3", "4");
		
		System.out.println(demo1.toString());
		System.out.println(demo2.toString());
	}

}
somma

Valeu vou fazer aqui

Obrigado

R

oi ai esta meu codigo

import java.io.*;         
          import java.util.HashMap;  
          import java.util.ArrayList;    
          import java.util.List;    
          import java.util.Map;    
          //import javax.swing.JOptionPane;   
      
      
                     
        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);       
             
                }     
      
            }  
        }  
    }

e tenho por exemplo este ficheiro

view plaincopy to clipboardprint?

961234567 253883377 24:05:2011 10:30:10 068 16 13  
    963456789 253883355 28:05:2011 12:15:17 088 12 09  
    963456789 253883377 29:05:2011 17:00:00 120 14 11  
    969876666 253883377 30:05:2011 10:05:34 070 11 09  
    961234567 253883377 31:05:2011 22:30:05 066 14 11  
    961234567 253883377 02:06:2011 14:19:41 076 15 13  
    963456789 253883377 05:06:2011 11:33:34 085 07 06

e queria que fosse pedido ao utilizador que dados e que ele quer imprimir. por exemplo...pedirmos para imprimir todos os dados com o numero 961234567

abraços

Criado 2 de outubro de 2007
Ultima resposta 27 de jun. de 2011
Respostas 5
Participantes 3