{"id":28076,"date":"2022-03-16T17:21:50","date_gmt":"2022-03-16T16:21:50","guid":{"rendered":"https:\/\/www.happycoders.eu\/?p=28076"},"modified":"2024-11-27T15:13:13","modified_gmt":"2024-11-27T14:13:13","slug":"java-stack","status":"publish","type":"post","link":"https:\/\/www.happycoders.eu\/de\/algorithmen\/java-stack\/","title":{"rendered":"Stack-Klasse in Java (mit Beispiel)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ebenso alt wie Java selbst ist die seit der Version 1.0 vorhandene Klasse <code>java.util.Stack<\/code> \u2013 eine Implementierung des <a href=\"\/de\/algorithmen\/stack-datenstruktur\/\">abstrakten Datentyps Stack<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Stack<\/code> erbt von <code>java.util.Vector<\/code> und implementiert damit zahlreiche Interfaces des Java Collections Frameworks. Das folgende Diagramm zeigt die Klassenhierarchie:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-half_600\"><img decoding=\"async\" width=\"600\" height=\"431\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/java-stack-class-diagram-600x431.png\" alt=\"java.util.Stack \u2013 Klassendiagramm\" class=\"wp-image-28157\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/java-stack-class-diagram-600x431.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/java-stack-class-diagram-224x161.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/java-stack-class-diagram-336x241.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/java-stack-class-diagram-504x362.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/java-stack-class-diagram-672x483.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/java-stack-class-diagram-400x287.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/java-stack-class-diagram-800x575.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/java-stack-class-diagram-944x678.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/java-stack-class-diagram.png 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption>java.util.Stack \u2013 Klassendiagramm<\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"java-stack-methoden\">Java Stack Methoden<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Stack<\/code> erweitert <code>Vector<\/code> um die folgenden Methoden:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>push()<\/code> \u2013 legt ein Element auf den Stack<\/li><li><code>pop()<\/code> \u2013 entnimmt das oberste Element vom Stack<\/li><li><code>peek()<\/code> \u2013 gibt das oberste Element des Stacks zur\u00fcck, ohne es vom Stack zu entfernen<\/li><li><code>empty()<\/code> \u2013 pr\u00fcft, ob der Stack leer ist; da Stack bereits die <code>isEmpty()<\/code>-Methode von <code>Vector<\/code> erbt, ist die <code>empty()<\/code>-Methode \u00fcberfl\u00fcssig; warum die JDK-Entwickler sie eingebaut haben, ist mir ein R\u00e4tsel.<\/li><li><code>search()<\/code> \u2013 sucht ein Element auf dem Stack und gibt dessen Entfernung zur Spitze des Stacks zur\u00fcck<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Die Funktionsweise der Methoden zeige ich im folgenden Beispiel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Genau wie <code>Vector<\/code> ist auch <code>Stack<\/code> threadsicher: Alle Methoden sind <code>synchronized<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"java-stack-beispiel\">Java Stack Beispiel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die folgenden Code-Schnipsel zeigen eine beispielhafte Verwendung von <code>Stack<\/code> (den kompletten Code findest du in der Klasse <a href=\"https:\/\/github.com\/SvenWoltmann\/java-collections-guide\/blob\/main\/src\/main\/java\/eu\/happycoders\/demos\/stack\/JavaStackDemo.java\" target=\"_blank\" rel=\"noopener\">JavaStackDemo<\/a> im GitHub-Repo).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zuerst legen wir einen Stack an und schieben per <code>push()<\/code> die Elemente \"apple\", \"orange\" und \"pear\" auf den Stack:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">Stack&lt;String&gt; stack = <span class=\"hljs-keyword\">new<\/span> Stack&lt;&gt;();\n\nstack.push(<span class=\"hljs-string\">\"apple\"<\/span>);\nstack.push(<span class=\"hljs-string\">\"orange\"<\/span>);\nstack.push(<span class=\"hljs-string\">\"pear\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Danach geben wir den Inhalt des Stacks auf der Konsole aus \u2013 sowie die Ergebnisse von <code>peek()<\/code> und <code>empty()<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">System.out.println(<span class=\"hljs-string\">\"stack = \"<\/span> + stack);\n\nSystem.out.println(<span class=\"hljs-string\">\"stack.peek() = \"<\/span> + stack.peek());\nSystem.out.println(<span class=\"hljs-string\">\"stack.empty() = \"<\/span> + stack.empty());<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Die Ausgabe sieht wie folgt aus:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">stack = &#091;apple, orange, pear]\nstack.peek() = pear\nstack.empty() = false\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Die <code>toString()<\/code>-Methode von Stack gibt die Elemente also von unten nach oben aus. Das zuletzt eingef\u00fcgte Element \"pear\" liegt auf der Spitze des Stacks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mit <code>search()<\/code> k\u00f6nnen wir nach einem Element suchen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">System.out.println(<span class=\"hljs-string\">\"stack.search(\\\"apple\\\") = \"<\/span> + stack.search(<span class=\"hljs-string\">\"apple\"<\/span>));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Die Ausgabe lautet:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">stack.search(\"apple\") = 3<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Das bedeutet, dass \"apple\" an dritter Position im Stack steht. Das liegt daran, dass wir nach \"apple\" zwei weitere Element auf den Stack geschoben haben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wir entnehmen die drei Elemente wieder:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">System.out.println(<span class=\"hljs-string\">\"stack.pop() = \"<\/span> + stack.pop());\nSystem.out.println(<span class=\"hljs-string\">\"stack.pop() = \"<\/span> + stack.pop());\nSystem.out.println(<span class=\"hljs-string\">\"stack.pop() = \"<\/span> + stack.pop());<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Wir sehen, dass die Elemente in umgekehrter Reihenfolge entnommen werden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">stack.pop() = pear\nstack.pop() = orange\nstack.pop() = apple<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Was passiert, wenn wir ein weiteres Mal <code>pop()<\/code> aufrufen?<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">System.out.println(<span class=\"hljs-string\">\"stack.pop() = \"<\/span> + stack.pop());<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Da der Stack jetzt leer ist, wird eine <code>EmptyStackException<\/code> geworfen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">Exception in thread \"main\" java.util.EmptyStackException\n\tat java.base\/java.util.Stack.peek(Stack.java:101)\n\tat java.base\/java.util.Stack.pop(Stack.java:83)\n\tat eu.happycoders.demos.stack.JavaStackDemo.main(JavaStackDemo.java:28)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Genau wie <code>pop()<\/code> w\u00fcrde auch <code>peek()<\/code> bei einem leerem Stack eine <code>EmptyStackException<\/code> werfen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"warum-man-stack-nicht-mehr-verwenden-sollte\">Warum man Stack nicht (mehr) verwenden sollte<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Java-Entwickler empfehlen <code>java.util.Stack<\/code> nicht mehr zu verwenden. Das Javadoc besagt:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><em>\"A more complete and consistent set of LIFO stack operations is provided by the Deque interface and its implementations, which should be used in preference to this class.\"<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Was genau bedeutet das? Meiner Meinung nach sollte <code>Stack<\/code> aus den folgenden Gr\u00fcnden nicht verwendet werden:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Durch die Erweiterung von <code>Vector<\/code> stellt <code>Stack<\/code> Operationen zur Verf\u00fcgung, die in einem Stack nichts zu suchen haben, so wie der Zugriff auf Elemente \u00fcber deren Index oder das Einf\u00fcgen und L\u00f6schen von Elementen an beliebigen Positionen.<\/li><li><code>Stack<\/code> implementiert kein Interface. Mit der Verwendung von <code>Stack<\/code> legt man sich also auf eine bestimmte Implementierung fest.<\/li><li>Die Verwendung von <code>synchronized<\/code> bei jedem Methodenaufruf ist kein besonders performantes Mittel, um eine Datenstruktur threadsicher zu machen. Besser ist in der Regel optimistisches Locking durch CAS (\"Compare-and-swap\")-Operationen, wie sie in den threadsicheren Queue- und Deque-Implementierungen zu finden sind.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"stack-alternativen\">Stack-Alternativen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Stattdessen empfehlen die Java-Entwickler eine der Deque-Implementierungen wie bspw. <a href=\"\/de\/algorithmen\/arraydeque-java\/\">ArrayDeque<\/a> zu verwenden. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die <a href=\"\/de\/algorithmen\/java-deque\/\">java.util.Deque-Schnittstelle<\/a> ist \u00e4hnlich wie die von <code>Stack<\/code>:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Es gibt die Methoden <code>push()<\/code>, <code>pop()<\/code> und <code>peek()<\/code>. <\/li><li>Statt <code>empty()<\/code> musst du <code>isEmpty()<\/code> aufrufen. <\/li><li>Eine <code>search()<\/code>-Methode gibt es nicht.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Der folgende Code (<a href=\"https:\/\/github.com\/SvenWoltmann\/java-collections-guide\/blob\/main\/src\/main\/java\/eu\/happycoders\/demos\/stack\/ArrayDequeDemo.java\" target=\"_blank\" rel=\"noopener\">ArrayDequeDemo<\/a> im GitHub-Repo) zeigt die beispielhafte Anwendung von <code>ArrayDeque<\/code> als Stack:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ArrayDequeDemo<\/span> <\/span>{\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#091;] args)<\/span> <\/span>{\n    Deque&lt;String&gt; stack = <span class=\"hljs-keyword\">new<\/span> ArrayDeque&lt;&gt;();\n\n    stack.push(<span class=\"hljs-string\">\"apple\"<\/span>);\n    stack.push(<span class=\"hljs-string\">\"orange\"<\/span>);\n    stack.push(<span class=\"hljs-string\">\"pear\"<\/span>);\n\n    System.out.println(<span class=\"hljs-string\">\"stack = \"<\/span> + stack);\n\n    System.out.println(<span class=\"hljs-string\">\"stack.peek() = \"<\/span> + stack.peek());\n    System.out.println(<span class=\"hljs-string\">\"stack.isEmpty() = \"<\/span> + stack.isEmpty());\n\n    System.out.println(<span class=\"hljs-string\">\"stack.pop() = \"<\/span> + stack.pop());\n    System.out.println(<span class=\"hljs-string\">\"stack.pop() = \"<\/span> + stack.pop());\n    System.out.println(<span class=\"hljs-string\">\"stack.pop() = \"<\/span> + stack.pop());\n\n    System.out.println(<span class=\"hljs-string\">\"stack.pop() = \"<\/span> + stack.pop());\n  }\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Wie du siehst, ist der Code nahezu identisch zum vorherigen Beispiel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allerdings ist zu bedenken, dass auch Deques Operationen anbieten, die ein Stack eigentlich nicht zur Verf\u00fcgung stellen sollte, wie z. B. das Einf\u00fcgen und Entfernen von Elementen am Boden des Stacks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alternativ kann man eine eigene Stack-Klasse implementieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In den n\u00e4chsten Teile dieses Tutorials stelle ich verschiedene Stack-Implementierungen vor:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>mit einem <a href=\"\/de\/algorithmen\/stack-implementieren\/\">ArrayDeque<\/a><\/li><li>mit einem <a href=\"\/de\/algorithmen\/stack-implementieren-array\/\">Array<\/a><\/li><li>mit einer <a href=\"\/de\/algorithmen\/stack-implementieren-linked-list\/\">LinkedList<\/a><\/li><li>mit einer (bzw. zwei) <a href=\"\/de\/algorithmen\/stack-implementieren-queue\/\">Queues<\/a><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn du noch Fragen hast, stelle sie gerne \u00fcber die Kommentar-Funktion. M\u00f6chtest du \u00fcber neue Tutorials und Artikel informiert werden? Dann <a href=\"#\" data-formkit-toggle=\"d8ee997126\">klicke hier<\/a>, um dich f\u00fcr den HappyCoders.eu-Newsletter anzumelden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie setzt man Javas Stack-Klasse ein (mit Beispiel)? Warum sollte man java.util.Stack nicht mehr verwenden? Welche Alternativen gibt es?<\/p>\n","protected":false},"author":1,"featured_media":28548,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"Wie setzt man Javas Stack-Klasse ein (mit Beispiel)? Warum sollte man java.util.Stack nicht mehr verwenden? Welche Alternativen gibt es?","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"none","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"both","_seopress_redirections_param":"","_seopress_redirections_type":301,"_seopress_analysis_target_kw":"java stack,stack in java,stack java,Stack-Klasse","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[{"_seopress_pro_rich_snippets_type":"none"}],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"_uag_custom_page_level_css":"","_wp_convertkit_post_meta":{"form":"-1","landing_page":"","tag":"0","restrict_content":"0"},"_metis_text_type":"standard","_metis_text_length":6213,"_post_count":0,"footnotes":""},"categories":[127],"tags":[191],"class_list":["post-28076","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-algorithmen","tag-datenstrukturen-stack"],"uagb_featured_image_src":{"full":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602.jpg",1770,996,false],"thumbnail":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602.jpg",150,84,false],"medium":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602.jpg",300,169,false],"medium_large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602.jpg",768,432,false],"large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602.jpg",1024,576,false],"feature_thumb_224":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602-224x126.jpg",224,126,true],"feature_thumb_336":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602-336x189.jpg",336,189,true],"feature_thumb_504":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602-504x284.jpg",504,284,true],"feature_thumb_672":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602-672x378.jpg",672,378,true],"half_400":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602-400x225.jpg",400,225,true],"half_600":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602-600x338.jpg",600,338,true],"full_800":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602-800x450.jpg",800,450,true],"full_944":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602-944x531.jpg",944,531,true],"full_1200":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602-1200x675.jpg",1200,675,true],"wide_1180":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602-1180x490.jpg",1180,490,true],"wide_1770":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602-1770x735.jpg",1770,735,true],"1536x1536":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602.jpg",1536,864,false],"2048x2048":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stones-7004602.jpg",1770,996,false]},"uagb_author_info":{"display_name":"Sven Woltmann","author_link":"https:\/\/www.happycoders.eu\/de\/author\/sven\/"},"uagb_comment_info":2,"uagb_excerpt":"Wie setzt man Javas Stack-Klasse ein (mit Beispiel)? Warum sollte man java.util.Stack nicht mehr verwenden? Welche Alternativen gibt es?","public_identification_id":"5eb1cca6d74f4b8dabb2d052c6ac7404","private_identification_id":"0f1745d4b5b146ed93113248b354fc2d","_links":{"self":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/28076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/comments?post=28076"}],"version-history":[{"count":10,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/28076\/revisions"}],"predecessor-version":[{"id":31218,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/28076\/revisions\/31218"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media\/28548"}],"wp:attachment":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media?parent=28076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/categories?post=28076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/tags?post=28076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}