HashMap - sem aparecer as informações

Olá, pessoal!

Estou aprendendo o sobre hashmap, mas não consigo encontrar para resolver problemas para receber as informações.

Aluno

public class Aluno {
	private int matricula;
	private String nomeAluno;
	private double nota;
	
	public Aluno(int mat,String nome,double nota){
		this.matricula = mat;
		this.nomeAluno = nome;
		this.nota = nota;
	}
      // Metodos do Setters e Getters

UsandoHashMap

public class UsandoHashMaps {
	private HashMap<Integer, Aluno> mapeamentoDeAluno;
	
	public void usandoHashMap(int getMatricula,Aluno a){
		
		mapeamentoDeAluno = new HashMap<Integer, Aluno>();
		
		mapeamentoDeAluno.put(a.getMatricula(), a);
		
	}
	
	public void entradaUsuario(){
		int valorDigitadoInt = 0;
		String valorDigitado = JOptionPane.showInputDialog(null,"Digita o número da Matricula","Entrada de dados",JOptionPane.DEFAULT_OPTION);
		
		try {
			valorDigitadoInt = Integer.parseInt(valorDigitado);
			if(!mapeamentoDeAluno.containsKey(valorDigitado)){
				throw new Exception();
			} 
			
			System.out.println("-----Perfil do Aluno------");
			System.out.println("Nome: "+mapeamentoDeAluno.get(valorDigitado).getNomeAluno());
			System.out.println("Matricula: "+mapeamentoDeAluno.get(valorDigitado).getMatricula());
			System.out.println("Nota: "+mapeamentoDeAluno.get(valorDigitado).getNota());
			System.out.println();
			
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null,"Não existe essa matricula","Erro",JOptionPane.ERROR_MESSAGE);
			e.printStackTrace();
		}
	}
}

Programa

public class Programa {

	public static void main(String[] args) {
		UsandoHashMaps teste = new UsandoHashMaps();
		
		Aluno a = new Aluno(1,"Jeison",9.0);
		Aluno b = new Aluno(4,"Rafael",7.6);

		teste.usandoHashMap(a.getMatricula(),a);
		teste.usandoHashMap(b.getMatricula(),b);
		
		teste.entradaUsuario();
		
	}
}

Mude o momento que vc instancia o hashmap.

private HashMap&lt;Integer, Aluno&gt; mapeamentoDeAluno =  new HashMap&lt;Integer, Aluno&gt;();[/code]


método
[code]public void usandoHashMap(int getMatricula,Aluno a){   
           
        mapeamentoDeAluno.put(a.getMatricula(), a);   
           
    }

Abraços

Bom dia.

Você está usando da forma errado o Hash, não o uso dele em si, mas a sua lógica.
Veja este trecho:

teste.usandoHashMap(a.getMatricula(),a);   
teste.usandoHashMap(b.getMatricula(),b);   

E o respectivo método:

 public void usandoHashMap(int getMatricula,Aluno a){   
           
        mapeamentoDeAluno = new HashMap<Integer, Aluno>();   
           
        mapeamentoDeAluno.put(a.getMatricula(), a);   
           
    }  

Percebe que você instancia o hash a cada chamada do método? Sempre, eu disse, sempre, o seu hashmap irá conter apenas um único aluno.
A idéia de usar o número da matricula como chave, achei interessante, a partir da matrícula do aluno retorna os dados do mesmo.

Apenas reveja a sua lógica e necessidade.
Abraços.

[quote=lelodois]Mude o momento que vc instancia o hashmap.

private HashMap&lt;Integer, Aluno&gt; mapeamentoDeAluno =  new HashMap&lt;Integer, Aluno&gt;();[/code]


método
[code]public void usandoHashMap(int getMatricula,Aluno a){   
           
        mapeamentoDeAluno.put(a.getMatricula(), a);   
           
    }

Abraços[/quote]

Particularmente, sou contra esse tipo de instanciamento.
Prefiro que seja feito ou via class loader ou no próprio construtor, o que acho mais interessante.

Abraços.

[quote=nel][quote=lelodois]Mude o momento que vc instancia o hashmap.

private HashMap&lt;Integer, Aluno&gt; mapeamentoDeAluno =  new HashMap&lt;Integer, Aluno&gt;();[/code]


método
[code]public void usandoHashMap(int getMatricula,Aluno a){   
           
        mapeamentoDeAluno.put(a.getMatricula(), a);   
           
    }

Abraços[/quote]

Particularmente, sou contra esse tipo de instanciamento.
Prefiro que seja feito ou via class loader ou no próprio construtor, o que acho mais interessante.

Abraços.[/quote]

Acredito que no contexto atual é indiferente o momento da instanciação…

[quote=lelodois][quote=nel][quote=lelodois]Mude o momento que vc instancia o hashmap.

private HashMap&lt;Integer, Aluno&gt; mapeamentoDeAluno =  new HashMap&lt;Integer, Aluno&gt;();[/code]


método
[code]public void usandoHashMap(int getMatricula,Aluno a){   
           
        mapeamentoDeAluno.put(a.getMatricula(), a);   
           
    }

Abraços[/quote]

Por que decidi tirar o construtor e

Particularmente, sou contra esse tipo de instanciamento.
Prefiro que seja feito ou via class loader ou no próprio construtor, o que acho mais interessante.

Abraços.[/quote]

Acredito que no contexto atual é indiferente o momento da instanciação…
[/quote]

Acabei de conseguir resolver a programar e funcionou perfeitamente, é diferente tutorial que eu pensei fazer… veja ai

Classe Aluno

public class Aluno {
	private int matricula;
	private String nomeAluno;
	private double nota;
	

     // Metodos Getters e Setters

Classe UsandoHashMap

public class UsandoHashMaps {
	private HashMap&lt;Integer, Aluno&gt; mapeamentoDeAluno = new HashMap&lt;Integer, Aluno&gt;();
	public void usandoHashMap(ArrayList&lt;Aluno&gt; al){
		for (int i = 0; i &lt; al.size(); i++) {
			mapeamentoDeAluno.put(al.get(i).getMatricula(), al.get(i));
		}
	}
	public void entradaUsuario() throws Exception{
		try {
			int valorDigitado = Integer.parseInt(JOptionPane.showInputDialog(null,&quot;Digita o número da Matricula&quot;,&quot;Entrada de dados&quot;,JOptionPane.DEFAULT_OPTION));
			if(mapeamentoDeAluno.containsKey(valorDigitado)){
				System.out.println(&quot;-----Perfil do Aluno------&quot;);
				System.out.println(&quot;Nome: &quot;+mapeamentoDeAluno.get(valorDigitado).getNomeAluno());
				System.out.println(&quot;Matricula: &quot;+mapeamentoDeAluno.get(valorDigitado).getMatricula());
				System.out.println(&quot;Nota: &quot;+mapeamentoDeAluno.get(valorDigitado).getNota());
				System.out.println();
			} 
		} catch (NumberFormatException e) {
			JOptionPane.showMessageDialog(null,&quot; Digite apenas somente os números.&quot;,&quot;ERRO!&quot;,JOptionPane.ERROR_MESSAGE);
			e.printStackTrace();
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null,&quot;Não existe essa matricula&quot;,&quot;Erro&quot;,JOptionPane.ERROR_MESSAGE);
			e.printStackTrace();
		}
	}
}

Classe Programa


public class Programa {
	public static void main(String[] args) throws Exception {
		UsandoHashMaps teste = new UsandoHashMaps();
		
		ArrayList&lt;Aluno&gt; al = new ArrayList&lt;Aluno&gt;();
		
		Aluno a = new Aluno();
		a.setMatricula(10);
		a.setNomeAluno("Jeison");
		a.setNota(9.0);
		
		Aluno b = new Aluno();
		b.setMatricula(12);
		b.setNomeAluno("Carina");
		b.setNota(7.1);
		
		Aluno c = new Aluno();
		c.setMatricula(13);
		c.setNomeAluno("Bianca");
		c.setNota(10.0);
		
		al.add(a);
		al.add(b);
		al.add(c);
		
		teste.usandoHashMap(al);
		teste.entradaUsuario();
	}
}

Assim que eu rodei e funcionou perfeitamente.

Run as > Java application e fecha o olho.
rsrsrsrs

Olá!

Duas observações que eu gostaria de fazer.

1 - Caso seu problema tenha sido resolvido, coloque [Resolvido] ao lado do seu tópico, basta edita-lo. Assim, ninguém acessa ele pensando que você ainda precisa de algo.

2 - Se você simplesmente copiou, colou e rodou em sua máquina um código “achado” na internet e tens o intuito de aprender Java, aconselho a entender muito bem o que o código faz, executar modificações, testes, caso contrário, vai estar se enganando e não irá aprender nada.

Abraços.

[quote=nel]Olá!

Duas observações que eu gostaria de fazer.

1 - Caso seu problema tenha sido resolvido, coloque [Resolvido] ao lado do seu tópico, basta edita-lo. Assim, ninguém acessa ele pensando que você ainda precisa de algo.

2 - Se você simplesmente copiou, colou e rodou em sua máquina um código “achado” na internet e tens o intuito de aprender Java, aconselho a entender muito bem o que o código faz, executar modificações, testes, caso contrário, vai estar se enganando e não irá aprender nada.

Abraços.[/quote]

obrigado pela dica preciso colocar resolvido, mas colocar [resolvido] assunto principal do topico, eu não encontrei isso…
ah! você acha que estou copiado tudo código para rodar a máquina, não… quando material nova aproveitar ler e treinar, por quando caso encontrar os erros, tento corrigir até descobrindo para resolver as problemas, treinando as novas manterias e fazendo práticas pelo exercícios. valeu!!!

Show de bola!!

Para editar o tópico, quando mandar editar uma mensagem verá que é possível editar o topico, tem post aqui no guj que ensina isso.
Abraços.