[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

RE: LinkedHashMap



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