[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Re: LinkedHashMap
- Subject: Re: LinkedHashMap
- From: Daniel de Angelis Cordeiro <danielc@xxxxxxxxxxxxxxxx>
- Date: Tue, 6 May 2003 15:09:09 -0300
Só completando,
O LinkedHashMap internamente possui um HashTable e uma LinkedList. Ele
armazena os elementos (como um HashTable) mas mantém a ordem em que os
elementos foram inseridos ou acessados (o usuário define qual o
critério).
Após toda inserção, o LinkedHashMap executa o método
removeEldestEntry(Map.Entry eldest) que devolve 'true' se o elemento
'eldest' deve ser removido ou 'false' caso contrário.
Isso faz com que a classe seja perfeita para criar um cache do tipo LRU
(Least Recently Used). Para criar um cache que contenha no máximo MAX
elementos, basta definir que a ordem mantida será a ordem
de acesso e implementar o removeEldestEntry:
protected boolean removeEldestEntry(Map.Entry eldest) {
return this.size() > MAX;
}
Esta classe foi muito útil neste EP. :-)
Mais informações podem ser obtidas em:
http://developer.java.sun.com/developer/JDCTechTips/2002/tt0709.html#tip1
e
http://java.sun.com/j2se/1.4.1/docs/api/java/util/LinkedHashMap.html
Abraço,
Daniel
Daniel André Vaquero escreveu:
> Olá!
>
> Conforme conversamos hoje no início da aula, estou escrevendo para falar
> sobre a classe do Java que minha equipe usou para fazer o cache de
> serventes no EP, usando ServantLocator.
> Usamos a classe LinkedHashMap do Java 1.4, que facilitou muito a
> implementação (foi só redefinir o método removeEldestEntry para definir
> quando um servente seria eliminado do cache). Dessa forma, não tivemos que
> nos preocupar com estruturas de dados para implementar o cache do "Evictor
> Pattern".
>
> Abraços,
>
> --
> Daniel <daniel@linux.ime.usp.br>
--
Daniel de Angelis Cordeiro <danielc@linux.ime.usp.br>
--
To me vi is Zen. To use vi is to practice zen. Every command is
a koan. Profound to the user, unintelligible to the uninitiated.
You discover truth everytime you use it.
-- reddy@lion.austin.ibm.com