---
title: 'LinkedHashMap und LRU-Implementierungen'
url: 'https://www.tutego.de/blog/javainsel/2013/01/linkedhashmap-und-lru-implementierungen'
markdown: 'https://www.tutego.de/blog/javainsel/2013/01/linkedhashmap-und-lru-implementierungen.md'
date: '2013-01-30'
description: 'Da die Reihenfolge der eingefügten Elemente bei einem Assoziatspeicher verloren geht, gibt es mit LinkedHashMap eine Mischung, also ein schneller Assoziativspeicher mit gleichzeitiger Speicherung der Reihenfolge der Objekte. Die Bauart vom Klassename LinkedHashMap macht schon deutlich, dass es eine…'
taxonomy:
  category:
    - Insel
---

# LinkedHashMap und LRU-Implementierungen

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## LinkedHashMap und LRU-Implementierungen

30.01.2013 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Da die Reihenfolge der eingefügten Elemente bei einem Assoziatspeicher verloren geht, gibt es mit LinkedHashMap eine Mischung, also ein schneller Assoziativspeicher mit gleichzeitiger Speicherung der Reihenfolge der Objekte. Die Bauart vom Klassename LinkedHashMap macht schon deutlich, dass es eine `Map` ist, und die Reihenfolge der Objekte liefert ein `Iterator`; es gibt keine listenähnliche Schnittstelle mit `get(int)`. LinkedHashMap ist für Assoziativspeicher das, was LinkedHashSet für `HashSet` ist.

Im Gegensatz zur normalen `HashMap` ruft LinkedHashMap immer genau dann die besondere Methode boolean `removeEldestEntry`(`Map`.Entry<K,V> eldest) auf, wenn intern ein Element der Sammlung hinzugenommen wird. Die Standardimplementierung dieser Methode liefert immer `false`, was bedeutet, dass das älteste Element nicht gelöscht werden soll, wen ein neues hinzukommt. Doch bietet das JDK die Methode aus Absicht protected an, denn sie kann von uns überschrieben werden, um eine Datenstruktur aufzubauen, die eine maximal Anzahl Elemente hat. So sieht das aus:

```java
package com.tutego.insel.util.map;

import java.util.*;

public class LRUMap extends LinkedHashMap {
  private final int capacity;

  public LRUMap( int capacity ) {
    super( capacity, 0.75f, true );
    this.capacity = capacity;
  }

  @Override
  protected boolean removeEldestEntry( Map.Entry eldest ) {
    return size() > capacity;
  }
}
```

LinkedHashSet bietet eine vergleichbare Methode `removeEldestEntry(…)` nicht. Wer dies benötigt, muss eine eigene Mengenklasse auf der Basis von LinkedHashMap realisieren.

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Doch erst mal keine privaten Interface-Methoden](https://www.tutego.de/blog/javainsel/2013/01/doch-erst-mal-keine-privaten-interface-methoden.md)
- Next: [Hashwerte von Wrapper-Objekten mit neuen Methoden ab Java 8](https://www.tutego.de/blog/javainsel/2013/01/hashwerte-von-wrapper-objekten-mit-neuen-methoden-ab-java-8.md)
