---
title: 'Schnittstelle Map.Entry und Updates in Java 8'
url: 'https://www.tutego.de/blog/javainsel/2014/01/schnittstelle-map-entry-und-updates-in-java-8-2'
markdown: 'https://www.tutego.de/blog/javainsel/2014/01/schnittstelle-map-entry-und-updates-in-java-8-2.md'
date: '2014-01-07'
description: 'Während keySet() nur die eindeutigen Schlüssel in einer Menge liefert und die assoziierten Elemente in einem zweiten Schritt geholt werden müssten, gibt entrySet() ein Set von Elementen typisiert mit Map.Entry zurück. Entry ist eine innere Schnittstelle von Map, die eine API zum Zugriff auf Schlüss…'
taxonomy:
  category:
    - Insel
    - 'Java 8'
---

# Schnittstelle Map.Entry und Updates in Java 8

![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/)

## Schnittstelle Map.Entry und Updates in Java 8

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

Während `keySet()` nur die eindeutigen Schlüssel in einer Menge liefert und die assoziierten Elemente in einem zweiten Schritt geholt werden müssten, gibt `entrySet()` ein `Set` von Elementen typisiert mit `Map`.Entry zurück. Entry ist eine innere Schnittstelle von `Map`, die eine API zum Zugriff auf Schlüssel-Werte-Paare deklariert. Die wichtigen Operationen dieser Schnittstelle sind `getKey()`, `getValue()` und `setValue()`, wobei die letzte Methode optional ist, aber etwa von `HashMap` angeboten wird. Neben diesen Methoden überschreibt Entry auch `hashCode()` und `equals(…)`.

Beispiel: Laufe die Elemente `HashMap` als Menge von `Map`.Entry-Objekten ab:

```java
for ( Map.Entry<String, String> e : h.entrySet() )
System.out.println( e.getKey() + "=" + e.getValue() );
```

`Map`.Entry ist eher ein Interna und die Objekte dienen nicht der langfristen Speicherung. Ein `entrySet()` ist eine Momentaufnahme und das Ergebnis sollte nicht referenziert werden, denn ändert sich der darunterliegende Assoziativspeicher, ändern sich auch die Entry-Objekt und das `Set`<`Map`.Entry> als ganzes ist vielleicht nicht mehr gültig. Entry-Objekt sind nur gültig im Moment der Iteration, was den Nutzen eingeschränkt. Daher ist die Rückgabe von `entrySet()` mit `Set`<`Map`.Entry<K,V>> auch relativ unspezifisch, um was für eine Art von `Set` es sich genau handelt; ob `HashSet` oder vielleicht NavigableSet spielt keine Rolle.

Auch wenn die `Map`.Entry-Objekte nicht für die Speicherung gedacht sind, können Sie in Java 8 in einem Strom von Daten verarbeitet und in einer zustandsbehafteten Operation sortiert werden. Der Bonus der Entry-Objekte im Strom ist einfach, dass es von Vorteil ist, Schüssel und Wert in einem Objekte gekapselt zu sehen. Aber was ist, wenn jetzt der Strom sortiert werden soll, etwa nach dem Schlüssel, oder dem Wert? Hier kommen neue Methoden von Java 8 ins Spiel, die den nötigen `Comparator` liefern.

Beispiel: Erfrage eine Menge von Entry-Objekten und sortiere sie nach dem assoziierten Wert:

map.**`entrySet()`**

.`stream()`

.sorted( **`Map`.Entry.<`String`, `String`>`comparingByValue()`** )

```java
.forEach( System.out::println );

static interface Map.Entry<K,V>
```

- `static <K extends Comparable<? super K>,V> Comparator<Map.Entry<K,V>> comparingByKey()`
- `static <K,V extends Comparable<? super V>> Comparator<Map.Entry<K,V>> comparingByValue()`
- `static <K,V> Comparator<Map.Entry<K,V>> comparingByKey(Comparator<? super K> cmp)`
- `static <K,V> Comparator<Map.Entry<K,V>> comparingByValue(Comparator<? super V> cmp)`

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/), [Java 8](https://www.tutego.de/blog/javainsel/category/java-8/)

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

---

## Navigation

- Previous: [String-Repräsentation, Gleichheitstest, Hashwert und Klon eines Assoziativspeicher](https://www.tutego.de/blog/javainsel/2014/01/string-reprsentation-gleichheitstest-hashwert-und-klon-eines-assoziativspeicher.md)
- Next: [Kollisionen und Hash-Funktionen](https://www.tutego.de/blog/javainsel/2014/01/kollisionen-und-hash-funktionen.md)
