[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
RE: LinkedHashMap
- Subject: RE: LinkedHashMap
- From: "Paulo Silveira" <paulo@xxxxxxxxxxxx>
- Date: Tue, 6 May 2003 16:32:50 -0300
Oi pessoal!
Quem quiser fazer o cache LRU que o Daniel fez, mas sem o java 1.4, pode
utilizar o org.apache.commons.collections.LRUMap do jakarta Collections:
http://jakarta.apache.org/commons/collections.html
Nem precisa extender a classe, basta usa-la diretamente que ela sempre
vai remover o mais velho quando estourar a capacidade.
------------------------
Paulo Silveira
http://www.paulo.com.br/
http://www.guj.com.br/
> -----Original Message-----
> From: Daniel de Angelis Cordeiro [mailto:danielc@linux.ime.usp.br]
> Sent: terça-feira, 6 de maio de 2003 15:09
> To: reverbel-sod@ime.usp.br
> Subject: Re: LinkedHashMap
>
>
> 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#tip
1
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