Banco banco = new Banco();
Random random = new Random();
ContaCorrente cc1 = new ContaCorrente(500);
cc1.setNome("Maria");
cc1.setNumeroConta(10);
ContaCorrente cc2 = new ContaCorrente(500);
cc2.setNome("José");
cc2.setNumeroConta(10);
ContaPP contaPP = new ContaPP(500);
contaPP.setNome("Joaquim");
contaPP.setNumeroConta(10);
banco.adiciona(cc1);
banco.adiciona(cc2);
banco.adiciona(contaPP);
System.out.println(banco.buscaPorNomeMap("Maria"));
System.out.println(banco.contas.size());
--------------------- CLASS BANCO ------------------------------------------------
public class Banco {
//List<Conta> contas = new ArrayList<Conta>();
Map<String, Conta> contas = new HashMap<String, Conta>(); // Indica que só aceita, a chave como STRING, e OBJECT do tipo CONTA
// MÉTODOS
public int pegaQuantidadeDeContas(){
return contas.size(); // Método SIZE do ArrayList já retorna um INT
}
public Conta buscaPorNomeMap(String nome){
// 1.1 Método "get" do ArrayList, provavelmente é BOOLEAN
return contas.get(nome); // 1.2 Lembrando que o "get" utiliza o método "toString", "OLHAR se ele não foi SOBRESCRITO"
}
public Conta buscaPorNome(String nome) throws NullPointerException{ // Método para buscar nome sem o HashMap
for(int i = 0; i < contas.size() ;i++){
if(contas.get(i).getNome().equals(nome)){
return contas.get(i);
}
}
throw new NullPointerException("Nome não encotrado!"); // Envia um Exception
//return null; // Se não encontrar no ArrayList a conta com o nome desejado, retorna NULL
}
// GET E SET (PARA NO ARRAYLIST)
public void adiciona(Conta c){ // Método para ADD no HashMap (OBS: o nome já foi decidido no main)
contas.put(c.getNome() , c);
}
/**
public void adiciona(Conta c){ // Método para ADD no ArrayList
contas.add(c);
}
*/
public Conta pegaConta(int x){
return contas.get(x); // Irá retornar a posição da conta desejada
}
} // FECHA CLASS
---------------------------------- CLASSE CONTA ------------------------------
protected int numeroConta;
protected double saldo;
protected String nome;
protected int agencia;
@Override // 1.1 Sobrescrevendo o Método de heranças
public int compareTo(Conta outra) { // 1.2 Aqui está sobrescrevendo o método, para indicar ao utilizar o "sort" de "Collection"
if(this.saldo < outra.saldo) return -1; // 1.3 Criando uma regra para ordenar do menor número para o maior
if(this.saldo > outra.saldo) return 1; // 1.4 Collection.sort = Utiliza-se desse método para criar uma regra de "ordenação"
return 0;
}
/** // Desse modo faria o "sort" do Collection, ordenar por ORDEM ALFABÉTICA
@Override
public int compareTo(Conta outra) {
return this.nome.compareTo(outra.nome);
}**/
@Override // Sobrescreve
public String toString() { // 1.1 Aqui estou SOBREESCREVENDO o método toString da Mãe(OBJECT)- Em vez de usar o toString da class OBJECT usa esse da CONTA
return "Nome: " + getNome(); // 1.2 Já que todas as Class HERDAM de Object e toString é um método da class Object
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + numeroConta;
return result;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof Conta)) {
return false;
}
Conta other = (Conta) obj;
if (numeroConta != other.numeroConta) {
return false;
}
return true;
}
- Minha dúvida é, que não consigo fazer com que o SIZE do HASHMAP, evite a repetição das contas que tem o mesmo númeroDeConta. Alguma ajuda ?'