Segue todas minhas classes, estava com ArrayList mas gostaria de mudar para HashMap
package parcialAgenda;
import java.util.Collection;
public interface Agenda {
public boolean adicionar (String nome, String telefone);
public boolean remover (String nome, String telefone);
public Collection<Contato> getContatos();
}
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.HashMap;
import java.util.Map;
public class Contato {
private String nome;
private Set<String> telefone;
public Contato(String nome) {
this.nome = nome;
this.telefone = new HashSet<>();
}
//Gerar os gets e sets, equals e HashCode
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Set<String> getTelefone(){
return telefone;
}
public int hashCode() {
return this.nome.hashCode();
}
public boolean equals (Object obj) {
if (this==obj) {
return true;
}
if (obj==null) {
return false;
}
if (getClass()!=obj.getClass()) {
return false;
}
final Contato other = (Contato) obj;
if(!Objects.equals(this.nome, other.nome)) {
return false;
}
return true;
}
}
package parcialAgenda;
import java.util.Scanner;
public class AppAgenda {
private static Agenda agenda = new HashMaap();
public static void main(String[] args) {
Scanner teclado = new Scanner (System.in);
int opcao = 0;
do {
System.out.println("####Aplicativo Agenda####");
System.out.println("1 - Adicionar um telefone");
System.out.println("2 - Remover um telefone");
System.out.println("3 - Listar contatos");
System.out.println("4 - Sair");
opcao = Integer.valueOf(teclado.nextLine());
switch (opcao) {
case 1: adicionar(teclado); break;
case 2: remover(teclado); break;
case 3: listar(); break;
}
}while (opcao != 4);
teclado.close();
}
public static void adicionar (Scanner teclado) {
System.out.println("Informe o nome do contato: ");
String nome = teclado.nextLine();
System.out.println("Informe o novo telefone");
String telefone = teclado.nextLine();
if (agenda.adicionar(nome, telefone)) {
System.out.println("Adicionado com Sucesso!");
}else {
System.out.println("Telefone já existe!");
}
}
public static void remover (Scanner teclado) {
System.out.println("Informe o nome do contato: ");
String nome = teclado.nextLine();
System.out.println("Informe o telefone do contato: ");
String telefone = teclado.nextLine();
if(agenda.remover(nome, telefone)) {
System.out.println("Removido com sucesso!");
}else {
System.out.println("Contato/Telefone não existem!");
}
}
public static void listar() {
for (Contato c: agenda.getContatos()) {
System.out.println(c.getNome()+": "+c.getTelefone());
}
}
}
package parcialAgenda;
import java.util.*;
public class HashMaap implements Agenda {
private Map<Contato,String> contatos = new HashMap<>();
public boolean adicionar(String nome, String telefone){
Contato contato = new Contato(nome);
for(Contato c : this.contatos.keySet()){
contatos.containsKey(telefone);
contatos.containsValue(nome);
if(c.equals(contato)){
return contatos != null;
}
}
return contato.getTelefone().add(telefone);
}
public boolean remover(String nome, String telefone){
Contato c = new Contato(nome);
for(Contato i: this.contatos.keySet()){
if(i.equals(c)){
i.getTelefone().remove(telefone);
if(i.getTelefone().isEmpty()){
this.contatos.remove(i);
}
}
}
return false;
}
public Collection<Contato> getContatos(){
return (Collection<Contato>) this.contatos;
}
}