{"id":377,"date":"2024-05-07T00:01:31","date_gmt":"2024-05-06T23:01:31","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=377"},"modified":"2024-06-05T00:03:06","modified_gmt":"2024-06-04T23:03:06","slug":"die-treemap-collection-in-java","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=377","title":{"rendered":"Die TreeMap-Collection in Java"},"content":{"rendered":"\n<p>Die TreeMap ist eine der wichtigsten und n\u00fctzlichsten Collections in der Java-Programmiersprache. Sie geh\u00f6rt zur Java Collections Framework und implementiert die NavigableMap-Schnittstelle sowie indirekt die SortedMap-Schnittstelle. Die TreeMap speichert ihre Elemente in einer nat\u00fcrlichen Reihenfolge oder anhand eines benutzerdefinierten Vergleichers (Comparator). In diesem Artikel werden wir die TreeMap detailliert betrachten, einschlie\u00dflich ihrer Eigenschaften, Einsatzm\u00f6glichkeiten, Methoden und Beispiele f\u00fcr deren Nutzung.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Eigenschaften der TreeMap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Sortierte Speicherung<\/h3>\n\n\n\n<p>Eine der herausragenden Eigenschaften der TreeMap ist, dass sie die Schl\u00fcssel in aufsteigender Reihenfolge speichert. Dies wird durch eine selbstbalancierende bin\u00e4re Suchstruktur, meist ein Rot-Schwarz-Baum, erm\u00f6glicht. Dadurch bleibt die Effizienz bei Einf\u00fcge-, L\u00f6sch- und Suchoperationen hoch.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Implementierung von NavigableMap<\/h3>\n\n\n\n<p>Die TreeMap implementiert die NavigableMap-Schnittstelle, die eine Erweiterung der SortedMap-Schnittstelle darstellt. Dies bietet zus\u00e4tzliche Methoden zum Navigieren durch die Map, wie z. B. <code>lowerKey<\/code>, <code>floorKey<\/code>, <code>ceilingKey<\/code> und <code>higherKey<\/code>, die es erm\u00f6glichen, Nachbarschl\u00fcssel zu finden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Keine Null-Schl\u00fcssel<\/h3>\n\n\n\n<p>Ein wichtiger Punkt bei der Nutzung von TreeMap ist, dass sie keine Null-Schl\u00fcssel unterst\u00fctzt. Das Einf\u00fcgen eines Schl\u00fcssels mit dem Wert <code>null<\/code> f\u00fchrt zu einer <code>NullPointerException<\/code>. Allerdings erlaubt TreeMap Null-Werte.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Vergleich und Sortierung<\/h3>\n\n\n\n<p>Die TreeMap verwendet die <code>compareTo<\/code>-Methode der Elemente oder einen benutzerdefinierten <code>Comparator<\/code>, der beim Erstellen der TreeMap \u00fcbergeben wird. Dadurch kann die Sortierung an spezifische Anforderungen angepasst werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Konstruktoren<\/h2>\n\n\n\n<p>Die TreeMap bietet mehrere Konstruktoren, um verschiedene Initialisierungsm\u00f6glichkeiten zu unterst\u00fctzen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>TreeMap()<\/strong>: Erstellt eine leere TreeMap, die die nat\u00fcrliche Reihenfolge der Schl\u00fcssel verwendet.<\/li>\n\n\n\n<li><strong>TreeMap(Comparator comparator)<\/strong>: Erstellt eine leere TreeMap, die die angegebene Vergleichsfunktion verwendet.<\/li>\n\n\n\n<li><strong>TreeMap(Map m)<\/strong>: Erstellt eine TreeMap, die die gleiche Zuordnung wie die angegebene Map hat, sortiert nach der nat\u00fcrlichen Reihenfolge der Schl\u00fcssel.<\/li>\n\n\n\n<li><strong>TreeMap(SortedMap m)<\/strong>: Erstellt eine TreeMap, die die gleiche Zuordnung wie die angegebene SortedMap hat, mit der gleichen Sortierreihenfolge.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Wichtige Methoden<\/h2>\n\n\n\n<p>Die TreeMap bietet eine Vielzahl von Methoden zur Verwaltung und Navigation der Daten. Hier sind einige der wichtigsten Methoden:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einf\u00fcgen und Entfernen von Elementen<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>put(K key, V value)<\/strong>: F\u00fcgt ein Schl\u00fcssel-Wert-Paar in die Map ein. Wenn der Schl\u00fcssel bereits vorhanden ist, wird der Wert aktualisiert.<\/li>\n\n\n\n<li><strong>remove(Object key)<\/strong>: Entfernt das Schl\u00fcssel-Wert-Paar mit dem angegebenen Schl\u00fcssel.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Zugriff auf Elemente<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>get(Object key)<\/strong>: Gibt den Wert des angegebenen Schl\u00fcssels zur\u00fcck.<\/li>\n\n\n\n<li><strong>containsKey(Object key)<\/strong>: \u00dcberpr\u00fcft, ob der angegebene Schl\u00fcssel vorhanden ist.<\/li>\n\n\n\n<li><strong>containsValue(Object value)<\/strong>: \u00dcberpr\u00fcft, ob der angegebene Wert vorhanden ist.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Navigation und Bereichsoperationen<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>firstKey()<\/strong>: Gibt den ersten Schl\u00fcssel zur\u00fcck.<\/li>\n\n\n\n<li><strong>lastKey()<\/strong>: Gibt den letzten Schl\u00fcssel zur\u00fcck.<\/li>\n\n\n\n<li><strong>subMap(K fromKey, K toKey)<\/strong>: Gibt eine Ansicht des Teils der Map zur\u00fcck, deren Schl\u00fcssel zwischen <code>fromKey<\/code> (inklusiv) und <code>toKey<\/code> (exklusiv) liegen.<\/li>\n\n\n\n<li><strong>headMap(K toKey)<\/strong>: Gibt eine Ansicht des Teils der Map zur\u00fcck, deren Schl\u00fcssel kleiner als <code>toKey<\/code> sind.<\/li>\n\n\n\n<li><strong>tailMap(K fromKey)<\/strong>: Gibt eine Ansicht des Teils der Map zur\u00fcck, deren Schl\u00fcssel gr\u00f6\u00dfer oder gleich <code>fromKey<\/code> sind.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Einsatzm\u00f6glichkeiten<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Sortierte Datenspeicherung<\/h3>\n\n\n\n<p>Die TreeMap ist ideal f\u00fcr Szenarien, in denen eine sortierte Speicherung und schnelle Suche erforderlich ist. Ein typisches Beispiel ist die Verwaltung einer Kontaktliste nach Namen sortiert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Navigationsoperationen<\/h3>\n\n\n\n<p>Durch die Implementierung der NavigableMap-Schnittstelle eignet sich die TreeMap hervorragend f\u00fcr Navigationsoperationen. Anwendungen, die Anforderungen an Bereichssuchen und Nachbaroperationen haben, k\u00f6nnen stark von TreeMap profitieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">LRU-Cache-Implementierungen<\/h3>\n\n\n\n<p>Eine TreeMap kann auch zur Implementierung von LRU-Caches (Least Recently Used) verwendet werden, indem die nat\u00fcrliche Sortierung der Einf\u00fcgezeiten genutzt wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Beispiel f\u00fcr die Nutzung der TreeMap<\/h2>\n\n\n\n<p>Um die Funktionen der TreeMap zu veranschaulichen, betrachten wir ein einfaches Beispiel, in dem eine TreeMap erstellt und verwaltet wird:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> java.util.*;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">TreeMapExample<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        <span class=\"hljs-comment\">\/\/ Erstellen einer TreeMap<\/span>\n        TreeMap&lt;<span class=\"hljs-built_in\">String<\/span>, Integer&gt; map = <span class=\"hljs-keyword\">new<\/span> TreeMap&lt;&gt;();\n\n        <span class=\"hljs-comment\">\/\/ Einf\u00fcgen von Schl\u00fcssel-Wert-Paaren<\/span>\n        map.put(<span class=\"hljs-string\">\"Alice\"<\/span>, <span class=\"hljs-number\">30<\/span>);\n        map.put(<span class=\"hljs-string\">\"Bob\"<\/span>, <span class=\"hljs-number\">25<\/span>);\n        map.put(<span class=\"hljs-string\">\"Charlie\"<\/span>, <span class=\"hljs-number\">35<\/span>);\n        map.put(<span class=\"hljs-string\">\"Dave\"<\/span>, <span class=\"hljs-number\">28<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Zugriff auf Elemente<\/span>\n        System.out.println(<span class=\"hljs-string\">\"Alter von Alice: \"<\/span> + map.get(<span class=\"hljs-string\">\"Alice\"<\/span>));\n\n        <span class=\"hljs-comment\">\/\/ Entfernen eines Elements<\/span>\n        map.remove(<span class=\"hljs-string\">\"Bob\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Navigation<\/span>\n        System.out.println(<span class=\"hljs-string\">\"Erster Schl\u00fcssel: \"<\/span> + map.firstKey());\n        System.out.println(<span class=\"hljs-string\">\"Letzter Schl\u00fcssel: \"<\/span> + map.lastKey());\n\n        <span class=\"hljs-comment\">\/\/ Bereichsoperationen<\/span>\n        SortedMap&lt;<span class=\"hljs-built_in\">String<\/span>, Integer&gt; subMap = map.subMap(<span class=\"hljs-string\">\"Alice\"<\/span>, <span class=\"hljs-string\">\"Dave\"<\/span>);\n        System.out.println(<span class=\"hljs-string\">\"SubMap: \"<\/span> + subMap);\n\n        <span class=\"hljs-comment\">\/\/ Iteration \u00fcber die Schl\u00fcssel<\/span>\n        <span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-built_in\">String<\/span> key : map.keySet()) {\n            System.out.println(<span class=\"hljs-string\">\"Schl\u00fcssel: \"<\/span> + key + <span class=\"hljs-string\">\", Wert: \"<\/span> + map.get(key));\n        }\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel erstellen wir eine TreeMap, f\u00fcgen einige Schl\u00fcssel-Wert-Paare hinzu, greifen auf Werte zu, entfernen ein Element, navigieren durch die Map und f\u00fchren Bereichsoperationen durch. Die Ausgabe zeigt die sortierte Reihenfolge der Schl\u00fcssel sowie die F\u00e4higkeit, Teilansichten der Map zu erzeugen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Die TreeMap ist eine vielseitige und leistungsstarke Datenstruktur im Java Collections Framework. Durch ihre F\u00e4higkeit, Daten in einer sortierten Reihenfolge zu speichern und effiziente Navigations- sowie Bereichsoperationen zu unterst\u00fctzen, ist sie f\u00fcr viele Anwendungen geeignet, die eine geordnete Speicherung und schnelle Zugriffszeiten erfordern. Mit den richtigen Kenntnissen und Anwendungsszenarien kann die TreeMap dazu beitragen, die Effizienz und Wartbarkeit von Java-Anwendungen zu verbessern.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die TreeMap ist eine der wichtigsten und n\u00fctzlichsten Collections in der Java-Programmiersprache. Sie geh\u00f6rt zur Java Collections Framework und implementiert die NavigableMap-Schnittstelle sowie indirekt die SortedMap-Schnittstelle. Die TreeMap speichert ihre Elemente in einer nat\u00fcrlichen Reihenfolge oder anhand eines benutzerdefinierten Vergleichers (Comparator). In diesem Artikel werden wir die TreeMap detailliert betrachten, einschlie\u00dflich ihrer Eigenschaften, Einsatzm\u00f6glichkeiten, Methoden [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-377","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=377"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/377\/revisions"}],"predecessor-version":[{"id":378,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/377\/revisions\/378"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}