Estou implementando uma Agenda Telefonica utilizando um HashMap em que a chave é uma String e o valor é um ArrayList de Pessoas (que contém nome e telefone). O objetivo é separar os contatos em ordem alfábetica, sendo assim a chave do HashMap são as letras do alfabeto.
Estou com dificuldade de criar o método de remover um contato e de consultar.
Processando: Agenda.java…
package Agenda;
import java.util.ArrayList;
import java.util.HashMap;
public class Agenda {
ArrayList<Pessoa> pessoas;
HashMap<String, ArrayList<Pessoa>> contatos;
String[] chaves = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S",
"T", "U", "V", "W", "Y", "Z" };
public Agenda() {
this.pessoas = new ArrayList<Pessoa>();
this.contatos = new HashMap<String, ArrayList<Pessoa>>();
}
public void inicializandoContatos() {
for (String chave : chaves) {
contatos.put(chave, pessoas);
}
System.out.println("Lista de chaves adicionadas: " + contatos.toString());
}
public void adicionarContato(Pessoa pessoa) {
String chave = null;
chave = pessoa.getNome().substring(0, 1);
pessoas = new ArrayList<Pessoa>();
pessoas.addAll(contatos.get(chave));
pessoas.add(pessoa);
if (contatos.containsKey(chave)) {
contatos.put(chave, pessoas);
} else {
System.out.println("Chave não existe!");
}
}
public void remover(String nome) {
String chave = null;
if (contatos.containsKey(nome)) {
for (Pessoa pessoa : pessoas) {
chave = pessoa.getNome().substring(0, 1);
if (pessoa.getNome().equals(nome)) {
contatos.remove(nome);
}
}
System.out.println("Contato removido!");
} else {
System.out.println("Contato inxistente!");
}
}
public Pessoa consultar(String nome) {
return null;
}
public String listaContatos() {
return "[Contatos=" + contatos + "]";
package Agenda;
public class Main {
public static void main(String[] args) {
Agenda agenda = new Agenda();
agenda.inicializandoContatos();
Pessoa pessoa;
pessoa = new Pessoa("Leandro", "9999-9999");
agenda.adicionarContato(pessoa);
pessoa = new Pessoa("Bruno", "1111-1111");
agenda.adicionarContato(pessoa);
pessoa = new Pessoa("Marcela", "8888-8888");
agenda.adicionarContato(pessoa);
pessoa = new Pessoa("Lucia", "6666-6666");
agenda.adicionarContato(pessoa);
System.out.println(agenda.listaContatos());
agenda.remover("Leandro"); //ao rodar o código diz que o contato não existe
System.out.println(agenda.listaContatos());
}