Ajuda com Hashtable de List<>

4 respostas
B

Olá pessoal, tudo bem?
Bom sou novo em JAVA e preciso de ajuda.

Bom estou desenvolvendo um projeto que contém o seguinte:

Uma classe Dados, que contem atributos agencia, endereço, horário e telefone

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sistemabanco;

/**
 *
 * @author Fábio Lima
 * 
 * Classe dados para a instituição informa os dados
 * 
 */
public class Dados {
    
    private String agencia; //Nome da agência da instituição
    private String endereco;//Endereço da agência
    private String horario;//Horário de atendimento
    private String telefone;//Telefone da agência
    
    public Dados(String agencia, String endereco, String horario, String telefone){
        this.agencia = agencia;
        this.endereco = endereco;
        this.horario = horario;
        this.telefone = telefone;
    }
    
    //Método Construtor
    public Dados(){
    }
    
    public String getAgencia(){
        return agencia;
    }
    
    public void setAgencia(String agencia){
        this.agencia = agencia;
    }
    
    public String getEndereco(){
        return endereco;
    }
    
    public void setEndereco(String endereco){
        this.endereco = endereco;
    }
    
    public String getHorario(){
        return horario;
    }
    
    public void setHorario(String horario){
        this.horario = horario;
    }
    
    public String getTelefone(){
        return telefone;
    }
    
    public void setTelefone(String telefone){
        this.telefone = telefone;
    }
    
}

Coloco isso em uma List Novo = new List
Se entendi bem, esse comando acima cria uma lista assim: vou colocar um exemplo do meu projeto

Novo
Agência: XXXXX
Endereco: XXXXXXX
Horário: XXXXXX
Telefone:XXXXXX

Certo?

Agora é o seguinte: Além disso, queria implementar uma hashtable dessa lista, ficando assim:

Bradesco
Novo
Agência: XXXXX
Endereco:XXXXXXX
Horário: XXXXXX
Telefone:XXXXXX
Novo1
Agência: XXXXX
Endereco: XXXXXXX
Horário: XXXXXX
Telefone:XXXXXX

Banco do Brasil
Novo
Agência: XXXXX
Endereco:XXXXXXX
Horário: XXXXXX
Telefone:XXXXXX
Novo1
Agência: XXXXX
Endereco: XXXXXXX
Horário: XXXXXX
Telefone:XXXXXX

Aqui está o código que inicia

Hashtable <String, List<Dados>> tabela = new Hashtable <String, List<Dados>>();

Queria saber como fazer os métodos para inserir o banco na tabela e depois inserir os dados relacionados a esse banco.
Alguém pode ajudar??

4 Respostas

fabiocortolan

Uma dúvida, não seria melhor vc ter uma lista de agências dentro da classe banco ou ter uma referência para banco dentro de uma classe agência?

R

Cara criei essa classe de exemplo. Lembrando que existem outras formas para fazer isso, não sei se essa vai ser a melhor pra você mas fiz só para responder a sua dúvida de como conseguir obter os dados…

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;

public class Teste {

	public static void main(String[] args) {
		Teste teste = new Teste();
		Hashtable <String, List<Dados>> tabela = new Hashtable <String, List<Dados>>();
		
		Dados agenciaX1 = new Dados();
		agenciaX1.setAgencia("X1");
		agenciaX1.setEndereco("EndX1");
		agenciaX1.setHorario("HrX1");
		agenciaX1.setTelefone("TelX1");
		
		Dados agenciaX2 = new Dados();
		agenciaX2.setAgencia("X2");
		agenciaX2.setEndereco("EndX2");
		agenciaX2.setHorario("HrX2");
		agenciaX2.setTelefone("TelX2");
		
		List<Dados> agenciasBancoDoBrasil = new ArrayList<Dados>();
		agenciasBancoDoBrasil.add(agenciaX1);
		agenciasBancoDoBrasil.add(agenciaX2);
		
		//Adiciona duas agências ao Banco do Brasil.
		tabela.put("Banco do Brasil", agenciasBancoDoBrasil);
		
		Dados agenciaX3 = new Dados();
		agenciaX3.setAgencia("X3");
		agenciaX3.setEndereco("EndX3");
		agenciaX3.setHorario("HrX3");
		agenciaX3.setTelefone("TelX3");
		
		Dados agenciaX4 = new Dados();
		agenciaX4.setAgencia("X4");
		agenciaX4.setEndereco("EndX4");
		agenciaX4.setHorario("HrX4");
		agenciaX4.setTelefone("TelX4");
		
		//Adiciona duas agências ao banco Bradesco.
		List<Dados> agenciasBancoBradesco = new ArrayList<Dados>();
		agenciasBancoBradesco.add(agenciaX3);
		agenciasBancoBradesco.add(agenciaX4);
		
		tabela.put("Banco Bradesco", agenciasBancoBradesco);
		
		//Chama seu método para inserir os dados.
		teste.inserir(tabela);
	}
	
	public void inserir(Hashtable <String, List<Dados>> dados) {
                //Obtém todos os bancos.
		Enumeration<String> bancos = dados.keys();
		
		//TODO Isso é só um exemplo pra você pegar os dados, as outras coisas relacionadas
		// ao banco de dados, devem ser feitas aqui.
		while (bancos.hasMoreElements()) {
			//Aqui você tem o banco.
			String banco = bancos.nextElement();
			System.out.println(banco);
			//Aqui você tem todas as agências relacionadas a esse banco.
			List<Dados> agencias = dados.get(banco);
			
			//Aqui você pega agência por agência.
			for (Dados agencia : agencias) {
				//Informações da agência.
				System.out.println(agencia.getAgencia());
				System.out.println(agencia.getEndereco());
				System.out.println(agencia.getTelefone());
				System.out.println(agencia.getHorario());
			}
		}
	}
}

Espero ter ajudado! :smiley:

B

RodrigoM91:
BRShooter:

Queria saber como fazer os métodos para inserir o banco na tabela e depois inserir os dados relacionados a esse banco.
Alguém pode ajudar??

Cara criei essa classe de exemplo. Lembrando que existem outras formas para fazer isso, não sei se essa vai ser a melhor pra você mas fiz só para responder a sua dúvida de como conseguir obter os dados…

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;

public class Teste {

	public static void main(String[] args) {
		Teste teste = new Teste();
		Hashtable <String, List<Dados>> tabela = new Hashtable <String, List<Dados>>();
		
		Dados agenciaX1 = new Dados();
		agenciaX1.setAgencia("X1");
		agenciaX1.setEndereco("EndX1");
		agenciaX1.setHorario("HrX1");
		agenciaX1.setTelefone("TelX1");
		
		Dados agenciaX2 = new Dados();
		agenciaX2.setAgencia("X2");
		agenciaX2.setEndereco("EndX2");
		agenciaX2.setHorario("HrX2");
		agenciaX2.setTelefone("TelX2");
		
		List<Dados> agenciasBancoDoBrasil = new ArrayList<Dados>();
		agenciasBancoDoBrasil.add(agenciaX1);
		agenciasBancoDoBrasil.add(agenciaX2);
		
		//Adiciona duas agências ao Banco do Brasil.
		tabela.put("Banco do Brasil", agenciasBancoDoBrasil);
		
		Dados agenciaX3 = new Dados();
		agenciaX3.setAgencia("X3");
		agenciaX3.setEndereco("EndX3");
		agenciaX3.setHorario("HrX3");
		agenciaX3.setTelefone("TelX3");
		
		Dados agenciaX4 = new Dados();
		agenciaX4.setAgencia("X4");
		agenciaX4.setEndereco("EndX4");
		agenciaX4.setHorario("HrX4");
		agenciaX4.setTelefone("TelX4");
		
		//Adiciona duas agências ao banco Bradesco.
		List<Dados> agenciasBancoBradesco = new ArrayList<Dados>();
		agenciasBancoBradesco.add(agenciaX3);
		agenciasBancoBradesco.add(agenciaX4);
		
		tabela.put("Banco Bradesco", agenciasBancoBradesco);
		
		//Chama seu método para inserir os dados.
		teste.inserir(tabela);
	}
	
	public void inserir(Hashtable <String, List<Dados>> dados) {
                //Obtém todos os bancos.
		Enumeration<String> bancos = dados.keys();
		
		//TODO Isso é só um exemplo pra você pegar os dados, as outras coisas relacionadas
		// ao banco de dados, devem ser feitas aqui.
		while (bancos.hasMoreElements()) {
			//Aqui você tem o banco.
			String banco = bancos.nextElement();
			System.out.println(banco);
			//Aqui você tem todas as agências relacionadas a esse banco.
			List<Dados> agencias = dados.get(banco);
			
			//Aqui você pega agência por agência.
			for (Dados agencia : agencias) {
				//Informações da agência.
				System.out.println(agencia.getAgencia());
				System.out.println(agencia.getEndereco());
				System.out.println(agencia.getTelefone());
				System.out.println(agencia.getHorario());
			}
		}
	}
}

Espero ter ajudado! :D

Muito Obrigado, ajudou bastante.

Agora senão for pedir demais, em vez de colocar essas informações na classe principal, eu preciso colocar em outra classe e criar métodos para chamá-la.
Por exemplo:
Crio uma classe com o nome Servidor e nela coloco os metodos para criar tabela. criar a lista e informar os dados da lista.
Mudando o código para um tipo lista ser criado com o nome da agência e seus atributos ser apenas: endereço, horário e telefone.
Então os métodos tem que receber como parametro um tipo lista?
Ex.:
Remover elemento da List: Se eu inserir uma lista com o nome brasília eu queria que ela removesse a lista brasilia com tudo que tivesse dentro dela, como: endereco, horario e telefone.

private List<Dados> removeDados(List<Dados> nome){

está certo?

R

Isso, dessa forma o método seria alterado, dessa forma:

public void inserir(List<Dados> agencias) {		
	
		for (Dados agencia : agencias) {
			//Informações da agência.
			System.out.println(agencia.getAgencia());
			System.out.println(agencia.getEndereco());
			System.out.println(agencia.getTelefone());
			System.out.println(agencia.getHorario());
		}
	}

E em algum lugar da sua aplicação você passaria essa lista para o método já preenchida.

Bom como você tem uma lista de Dados, tem duas formas de vc remover uma agência da sua lista, conforme o exemplo abaixo:

Dados agenciaX3 = new Dados();
		agenciaX3.setAgencia("X3");
		agenciaX3.setEndereco("EndX3");
		agenciaX3.setHorario("HrX3");
		agenciaX3.setTelefone("TelX3");
		
		Dados agenciaX4 = new Dados();
		agenciaX4.setAgencia("X4");
		agenciaX4.setEndereco("EndX4");
		agenciaX4.setHorario("HrX4");
		agenciaX4.setTelefone("TelX4");
		
		//Adiciona duas agências ao banco Bradesco.
		List<Dados> agenciasBancoBradesco = new ArrayList<Dados>();
		agenciasBancoBradesco.add(agenciaX3);
		agenciasBancoBradesco.add(agenciaX4);
		
		//Remove a agência a partir do objeto Dados.
		System.out.println(agenciasBancoBradesco.remove(agenciaX3));
		//Remove a agência pelo indice em que ela se encontra na lista.
		System.out.println(agenciasBancoBradesco.remove(0));

Falo!

Criado 26 de junho de 2013
Ultima resposta 1 de jul. de 2013
Respostas 4
Participantes 3