Olá! Estou fazendo uma aplicação super simples e acabei com esse problema. Gostaria de colocar um conjunto de Strings dentro de um HashMap. A idéia é associar os filmes locados ao identificador do cliente.
Os códigos:
public class Aluguel {
private Date dataDevolucao;
private int idLocacao;
private HashMap<Cliente, Aluguel> locacoesFeitas;
.....
public class ControladoraLocacao {
Aluguel aluguel;
public void realizarLocacao(int numeroCartaoAVS, ArrayList<Video> filmes){
aluguel.getLocacoesFeitas().put(numeroCartaoAVS, filmes);
}
}
O método realizarLocacao recebe o identificador do cliente e a lista dos filmes que ele vai locar… Mas a classe Aluguel registra todos as locações que já foram feitas. Daí o que eu pensei foi nesse modo de implementar. É possível colocar o ArrayList dentro do HashMap? Ou alguém sugere uma implementação melhor?
O map aceita como value qualquer Object, tendo em vista que uma Lista é um Object, ele aceita perfeitamente.
Podes colocar até mesmo outro Map se quiser
Isso e complementando o que o colega disse, busque programar orientado a interfaces, você ia usando um ArrayList como objeto do value.
E se tu quisesse usar uma Linkedlist, como ficaria? Teria de ir e alterar seu Map ou criar um novo.
Por isso o ideal é usar uma interface, como a Collections ou a List, para o seu caso, é claro.
Mas no caso eu teria que declarar como Collection ou List para armazenar os valores? E no caso de eu precisar associar no caso um identificador a um elemento? No caso do HashMap isso é possível, é? E nos outros casos?
Vai da sua decisão, particularmente, uso a list por prover mais métodos.
Quais seriam os outros casos ? Pois do modo como demonstrou está associando o identificador a possiveis valores já.
Na verdade eu entendi… usando Collection eu posso criar qualquer outro tipo, né?
Assim:
public class Locadora{
private Collection<Video> video;
....
public Locadora(String nome, String endereco) {
this.nome = nome;
this.endereco = endereco;
video = new ArrayList<Video>();
}