package Hashmap;

import java.util.HashMap;
import java.util.LinkedHashMap;

public class Hashmap {

	/* Was ist das? ist ein Array(Array ist HashMap) auf Entry(Entry ist LinkedList) 
	 * 
	 *  - Eine HashMap in Java ist eine spezielle Datenstruktur, die eine schnelle Speicherung und 
	 *  	den schnellen Zugriff auf Daten ermöglicht, indem sie Schlüssel-Wert-Paare speichert. 
	 *  
	 *  - akzeptiert zwei generische Parameter: HashMap<K, V>, wobei K der Schlüsseltyp und V der Werttyp ist.
	 *  - 
	 *  - mit Hashmap kann ich: 
	 *  	. suchen:   O(1)
	 *  	. einfügen: O(1)
	 *  	. lösche:   O(1)
	 *  
	 *  
	 */
	
	public static void main(String[] args) {
        // Erstellen einer Instanz der Klasse HashMap
        HashMap<String, Integer> map = new HashMap<>();

        // Hinzufügen von Einträgen in die HashMap
        map.put("Apfel", 3);
        map.put("Apfe", 3);
        map.put("Banane", 5);
        map.put("Orange", 2);

        // Zugriff auf ein Element der HashMap mittels Schlüssel
        int apfelMenge = map.get("Apfel");
        System.out.println("Anzahl der Äpfel: " + apfelMenge);

        // Überprüfen, ob ein Schlüssel in der HashMap vorhanden ist
        boolean hatOrange = map.containsKey("Orange");
        System.out.println("Hat Orange: " + hatOrange);
        
        // Überprüfen, ob ein bestimmter Wert in der HashMap vorhanden ist
        boolean hatWert5 = map.containsValue(5);
        System.out.println("Enthält die HashMap den Wert 5? " + hatWert5);
        
        // Entfernen eines Eintrags aus der HashMap
        map.remove("Banane");
        System.out.println("Banane entfernt. Aktueller Inhalt der HashMap: " + map);

        // Iterieren über die Einträge in der HashMap
        System.out.println("Inhalt der HashMap:");
        for (HashMap.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("Frucht: " + entry.getKey() + ", Menge: " + entry.getValue());
        }

        // Überprüfen, ob die HashMap leer ist
        boolean istLeer = map.isEmpty();
        System.out.println("Ist die HashMap leer? " + istLeer);

        // Erhalten der Größe der HashMap
        int größe = map.size();
        System.out.println("Größe der HashMap: " + größe);

        // Leeren der HashMap
        map.clear();
        System.out.println("HashMap nach dem Leeren: " + map);
    }
}
