Collections EnumMap

Wang

Bekanntes Mitglied
Hallo,

ich verstehe an diesem Beispiel nicht, warum der Schleifenkopf
Code:
for ( Zutaten z : werKauftWas.keySet())
hinhaut, denn die Methode keySet() gibt doch ein Set<K> zurück und Zutaten ist kein Set<K>. ???:L

Wie immer bin ich für jede Erklärung sehr dankbar.

Gruß
Wang

---
EDIT: Hat sich erledigt. ;)

---

Java:
// Datei: EnumMapBeispiel.java

import java.util.*;

enum Zutaten
{
   EIER, MEHL, BUTTER;
}

public class EnumMapBeispiel
{
   public static void main( String[] args)
   {
      Map<Zutaten,String> werKauftWas =
         new EnumMap<Zutaten, String> (Zutaten.class);

      werKauftWas.put (Zutaten.EIER, "Paul");
      werKauftWas.put (Zutaten.MEHL, "Sabine");
      werKauftWas.put (Zutaten.BUTTER, "Markus");

      // Paul kann doch zuhause bleiben
      werKauftWas.put (Zutaten.EIER, "Regina");

      for ( Zutaten z : werKauftWas.keySet())
      {
         System.out.println( werKauftWas.get( z) + " kauft " + z);
      }
   }
}
 
Zuletzt bearbeitet:

XHelp

Top Contributor
mit keySet kriegst du ein Set von Schlüsseln (in diesem Fall {Zutat.EIER, Zutaten.MEHL, Zutaten.BUTTER}) und mit der foreach-Schleife iterierst du darüber. Die Schleife heißt ja: "Für jede Zutat z aus keySet". Oder wo genau ist dein Problem?
 

Wang

Bekanntes Mitglied
In einem vorherigen Beispiel wurde die entsprechende Funktion so implementiert:

Java:
      Set<String> namen = telefonbuch.keySet();
      for (String name : namen)
      {
         System.out.print ("Nummer von " + name + ":\t");
         System.out.println (telefonbuch.get (name));
      }

Inzwischen ist es klar, hatte da gerade eben nur gedanklich voll den Hänger drinnen... Sollte für heute Feierabend machen! ;-)
 

Landei

Top Contributor
Auf der rechten Seite eine for-Schleife mit : kann entweder ein Array oder eine Klasse, die Iterable<T> implementiert (wie List<T> oder Set<T>) stehen. Das funktioniert übrigens auch für eigene Klassen, wenn sie Iterable<T> implementieren.
 

Oben