{"id":28083,"date":"2022-03-16T17:23:14","date_gmt":"2022-03-16T16:23:14","guid":{"rendered":"https:\/\/www.happycoders.eu\/?p=28083"},"modified":"2024-11-27T15:12:44","modified_gmt":"2024-11-27T14:12:44","slug":"stack-implementieren-array","status":"publish","type":"post","link":"https:\/\/www.happycoders.eu\/de\/algorithmen\/stack-implementieren-array\/","title":{"rendered":"Stack mit einem Array implementieren"},"content":{"rendered":"\n<p>Im letzten Teil haben wir einen <a href=\"\/de\/algorithmen\/stack-implementieren\/\">Stack als Adapter um ein ArrayDeque<\/a> geschrieben. In diesem Teil des Tutorials zeige ich dir, wie man einen Stack \u2013 ganz ohne Java-Collection-Klassen \u2013 mit einem Array implementiert.<\/p>\n\n\n\n<p>Im Grunde ist das ganz einfach: Wir legen ein leeres Array an und f\u00fcllen dieses von links nach rechts (also von Index 0 an aufsteigend) mit den auf den Stack gelegten Elementen. Beim Entnehmen der Elemente lesen wir diese von rechts nach links aus dem Array aus (und entfernen sie aus dem Array).<\/p>\n\n\n\n<p>Die folgende Grafik zeigt einen Stack mit einem Array namens <code>elements<\/code>, das acht Elemente fassen kann. Bisher wurden vier Elemente auf den Stack gelegt.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full_800\"><img decoding=\"async\" width=\"800\" height=\"141\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/implement-stack-using-array-800x141.png\" alt=\"Stack mit einem Array implementieren\" class=\"wp-image-28264\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/implement-stack-using-array-800x141.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/implement-stack-using-array-224x39.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/implement-stack-using-array-336x59.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/implement-stack-using-array-504x89.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/implement-stack-using-array-672x118.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/implement-stack-using-array-400x71.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/implement-stack-using-array-600x106.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/implement-stack-using-array-944x166.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/implement-stack-using-array-1200x212.png 1200w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/implement-stack-using-array.png 1600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption>Stack mit einem Array implementieren<\/figcaption><\/figure><\/div>\n\n\n\n<p>Die Anzahl der Elemente (nicht die Gr\u00f6\u00dfe des Arrays) wird in der Variablen <code>numberOfElements<\/code> gespeichert. Der Wert dieser Variablen zeigt uns, an welcher Position im Array wir ein Element einf\u00fcgen bzw. auslesen m\u00fcssen:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Einf\u00fcgen: an Position <code>numberOfElements<\/code><\/li><li>Auslesen: an Position <code>numberOfElements - 1<\/code><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"quellcode-fuer-den-stack-mit-einem-array-fester-groesse\">Quellcode f\u00fcr den Stack mit einem Array fester Gr\u00f6\u00dfe<\/h2>\n\n\n\n<p>Solange wir die Gr\u00f6\u00dfe das Arrays nicht \u00e4ndern m\u00fcssen, ist die Implementierung relativ einfach, wie der folgende Java-Code zeigt (Klasse <a href=\"https:\/\/github.com\/SvenWoltmann\/java-collections-guide\/blob\/main\/src\/main\/java\/eu\/happycoders\/collections\/stack\/BoundedArrayStack.java\">BoundedArrayStack<\/a> in GitHub):<\/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\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">BoundedArrayStack<\/span>&lt;<span class=\"hljs-title\">E<\/span>&gt; <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">Stack<\/span>&lt;<span class=\"hljs-title\">E<\/span>&gt; <\/span>{\n\n  <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> Object&#091;] elements;\n\n  <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">int<\/span> numberOfElements;\n\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">BoundedArrayStack<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> capacity)<\/span> <\/span>{\n    <span class=\"hljs-keyword\">if<\/span> (capacity &lt; <span class=\"hljs-number\">1<\/span>) {\n      <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> IllegalArgumentException(<span class=\"hljs-string\">\"Capacity must be 1 or higher\"<\/span>);\n    }\n\n    elements = <span class=\"hljs-keyword\">new<\/span> Object&#091;capacity];\n  }\n\n  <span class=\"hljs-meta\">@Override<\/span>\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">push<\/span><span class=\"hljs-params\">(E item)<\/span> <\/span>{\n    <span class=\"hljs-keyword\">if<\/span> (numberOfElements == elements.length) {\n      <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> IllegalStateException(<span class=\"hljs-string\">\"The stack is full\"<\/span>);\n    }\n    elements&#091;numberOfElements] = item;\n    numberOfElements++;\n  }\n\n  <span class=\"hljs-meta\">@Override<\/span>\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> E <span class=\"hljs-title\">pop<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    E element = elementAtTop();\n    elements&#091;numberOfElements - <span class=\"hljs-number\">1<\/span>] = <span class=\"hljs-keyword\">null<\/span>;\n    numberOfElements--;\n    <span class=\"hljs-keyword\">return<\/span> element;\n  }\n\n  <span class=\"hljs-meta\">@Override<\/span>\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> E <span class=\"hljs-title\">peek<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> elementAtTop();\n  }\n\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> E <span class=\"hljs-title\">elementAtTop<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">if<\/span> (isEmpty()) {\n      <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> NoSuchElementException();\n    }\n\n    <span class=\"hljs-meta\">@SuppressWarnings<\/span>(<span class=\"hljs-string\">\"unchecked\"<\/span>)\n    E element = (E) elements&#091;numberOfElements - <span class=\"hljs-number\">1<\/span>];\n\n    <span class=\"hljs-keyword\">return<\/span> element;\n  }\n\n  <span class=\"hljs-meta\">@Override<\/span>\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">boolean<\/span> <span class=\"hljs-title\">isEmpty<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> numberOfElements == <span class=\"hljs-number\">0<\/span>;\n  }\n}<\/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>Etwas komplizierter wird es, wenn mehr Elemente auf den Stack geschoben werden sollen als das Array gro\u00df ist. Ein Array kann ja nicht wachsen. Wie das funktioniert, zeige ich dir im n\u00e4chsten Kapitel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"implementierung-eines-stacks-mit-einem-array-variabler-groesse\">Implementierung eines Stacks mit einem Array variabler Gr\u00f6\u00dfe<\/h2>\n\n\n\n<p>Stattdessen m\u00fcssen wir (wenn das Array voll ist):<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>ein neues, gr\u00f6\u00dferes Array anlegen, <\/li><li>die Elemente des urspr\u00fcnglichen Arrays in das neue Array kopieren und <\/li><li>das alte Array verwerfen.<\/li><\/ol>\n\n\n\n<p>Das folgende Diagramm stellt diese drei Schritte grafisch dar:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full_800\"><img decoding=\"async\" width=\"800\" height=\"343\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stack-how-to-grow-array-800x343.png\" alt=\"Stack mit Array: Vergr\u00f6\u00dfern des Arrays\" class=\"wp-image-28253\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stack-how-to-grow-array-800x343.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stack-how-to-grow-array-224x96.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stack-how-to-grow-array-336x144.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stack-how-to-grow-array-504x216.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stack-how-to-grow-array-672x288.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stack-how-to-grow-array-400x172.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stack-how-to-grow-array-600x257.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stack-how-to-grow-array-944x405.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stack-how-to-grow-array-1200x515.png 1200w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/stack-how-to-grow-array.png 1600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption>Stack mit Array: Vergr\u00f6\u00dfern des Arrays<\/figcaption><\/figure><\/div>\n\n\n\n<p>All das k\u00f6nnen wir in Java mit dem Aufruf der Methode <code>Arrays.copyOf()<\/code> in einem Schritt erledigen. Dazu m\u00fcssen wir der Methode blo\u00df die gew\u00fcnschte Gr\u00f6\u00dfe des neuen Arrays \u00fcbergeben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"quellcode-fuer-den-stack-mit-einem-array-variabler-groesse\">Quellcode f\u00fcr den Stack mit einem Array variabler Gr\u00f6\u00dfe<\/h2>\n\n\n\n<p>Der folgende Code zeigt einen Stack, der initial mit einem Array f\u00fcr zehn Elemente angelegt wird. Bei jedem Aufruf der <code>push()<\/code>-Methode wird gepr\u00fcft, ob das Array voll ist. Ist das der Fall, wird die <code>grow()<\/code>-Methode aufgerufen. <\/p>\n\n\n\n<p>Diese wiederum ruft <code>calculateNewCapacity()<\/code> auf, um die neue Gr\u00f6\u00dfe des Arrays zu berechnen. Im Beispiel wird das Array immer um den Faktor 1,5 vergr\u00f6\u00dfert. Im Code ist au\u00dferdem eine Maximalgr\u00f6\u00dfe f\u00fcr das Array festgelegt. Wenn diese erreicht ist und ein weiteres Element gepusht wird, wird eine Exception geworfen (sofern es nicht schon vorher zu einem <code>OutOfMemoryError<\/code> kam).<\/p>\n\n\n\n<p>Hier ist der Code (Klasse <a rel=\"noopener\" href=\"https:\/\/github.com\/SvenWoltmann\/java-collections-guide\/blob\/main\/src\/main\/java\/eu\/happycoders\/collections\/stack\/ArrayStack.java\" target=\"_blank\">ArrayStack<\/a> in GitHub):<\/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\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ArrayStack<\/span>&lt;<span class=\"hljs-title\">E<\/span>&gt; <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">Stack<\/span>&lt;<span class=\"hljs-title\">E<\/span>&gt; <\/span>{\n\n  <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">int<\/span> MAX_SIZE = Integer.MAX_VALUE - <span class=\"hljs-number\">8<\/span>;\n  <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">int<\/span> DEFAULT_INITIAL_CAPACITY = <span class=\"hljs-number\">10<\/span>;\n  <span class=\"hljs-keyword\">private<\/span> Object&#091;] elements;\n  <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">int<\/span> numberOfElements;\n\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">ArrayStack<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">this<\/span>(DEFAULT_INITIAL_CAPACITY);\n  }\n\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">ArrayStack<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> initialCapacity)<\/span> <\/span>{\n    elements = <span class=\"hljs-keyword\">new<\/span> Object&#091;initialCapacity];\n  }\n\n  <span class=\"hljs-meta\">@Override<\/span>\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">push<\/span><span class=\"hljs-params\">(E item)<\/span> <\/span>{\n    <span class=\"hljs-keyword\">if<\/span> (elements.length == numberOfElements) {\n      grow();\n    }\n    elements&#091;numberOfElements] = item;\n    numberOfElements++;\n  }\n\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">grow<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">int<\/span> newCapacity = calculateNewCapacity(elements.length);\n    elements = Arrays.copyOf(elements, newCapacity);\n  }\n\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">calculateNewCapacity<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> currentCapacity)<\/span> <\/span>{\n    <span class=\"hljs-keyword\">if<\/span> (currentCapacity == MAX_SIZE) {\n      <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> IllegalStateException(<span class=\"hljs-string\">\"Can't grow further\"<\/span>);\n    }\n\n    <span class=\"hljs-keyword\">int<\/span> newCapacity = currentCapacity + calculateIncrement(currentCapacity);\n\n    <span class=\"hljs-keyword\">if<\/span> (newCapacity &gt; MAX_SIZE || newCapacity &lt; <span class=\"hljs-number\">0<\/span> <span class=\"hljs-comment\">\/* overflow *\/<\/span>) {\n      newCapacity = MAX_SIZE;\n    }\n\n    <span class=\"hljs-keyword\">return<\/span> newCapacity;\n  }\n\n  <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">calculateIncrement<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> currentCapacity)<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> currentCapacity \/ <span class=\"hljs-number\">2<\/span>;\n  }\n\n  <span class=\"hljs-comment\">\/\/ pop(), peek(), elementAtTop(), isEmpty() are the same as in BoundedArrayStack<\/span>\n\n}<\/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>Die Methoden <code>pop()<\/code>, <code>peek()<\/code>, <code>elementAtTop()<\/code> und <code>isEmpty()<\/code> gleichen denen im oben vorgestellten <code>BoundedArrayStack<\/code>. Ich habe sie daher nicht noch einmal mit abgedruckt.<\/p>\n\n\n\n<p>Was der <code>ArrayStack<\/code> in der abgedruckten Form noch nicht kann, ist das Array auch wieder verkleinern (wir wollen ja nicht \u00fcberm\u00e4\u00dfig viel Speicherplatz verschwenden). Versuch doch selbst einmal die Implementierung dahingehend zu erweitern.<\/p>\n\n\n\n<p>Wie <code>BoundedArrayStack<\/code> und <code>ArrayStack<\/code> eingesetzt werden k\u00f6nnen, kannst du dir im Programm <a rel=\"noopener\" href=\"https:\/\/github.com\/SvenWoltmann\/java-collections-guide\/blob\/main\/src\/main\/java\/eu\/happycoders\/demos\/stack\/StackDemo.java\" target=\"_blank\">StackDemo<\/a> ansehen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"ausblick\">Ausblick<\/h2>\n\n\n\n<p>Im n\u00e4chsten Teil der Serie lernst du eine Variante kennen, die nicht auf einem Array, sondern <a href=\"\/de\/algorithmen\/stack-implementieren-linked-list\/\">auf einer verketteten Liste<\/a> basiert und damit vollautomatisch bei jedem <code>push()<\/code> w\u00e4chst und sich mit jedem <code>pop()<\/code> wieder verkleinert.<\/p>\n\n\n\n<p>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 implementiert man in Java einen Stack basierend auf einem Array (ohne Java-Collections-Klassen)? Wie w\u00e4chst das Array bei Bedarf?<\/p>\n","protected":false},"author":1,"featured_media":28550,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"none","_seopress_titles_title":"","_seopress_titles_desc":"Wie implementiert man in Java einen Stack basierend auf einem Array (ohne Java-Collections-Klassen)? Wie w\u00e4chst das Array bei Bedarf?","_seopress_robots_index":"","_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":5820,"_post_count":0,"footnotes":""},"categories":[127],"tags":[191],"class_list":["post-28083","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\/wood-877368.jpg",1770,996,false],"thumbnail":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368.jpg",150,84,false],"medium":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368.jpg",300,169,false],"medium_large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368.jpg",768,432,false],"large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368.jpg",1024,576,false],"feature_thumb_224":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368-224x126.jpg",224,126,true],"feature_thumb_336":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368-336x189.jpg",336,189,true],"feature_thumb_504":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368-504x284.jpg",504,284,true],"feature_thumb_672":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368-672x378.jpg",672,378,true],"half_400":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368-400x225.jpg",400,225,true],"half_600":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368-600x338.jpg",600,338,true],"full_800":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368-800x450.jpg",800,450,true],"full_944":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368-944x531.jpg",944,531,true],"full_1200":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368-1200x675.jpg",1200,675,true],"wide_1180":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368-1180x490.jpg",1180,490,true],"wide_1770":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368-1770x735.jpg",1770,735,true],"1536x1536":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368.jpg",1536,864,false],"2048x2048":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/wood-877368.jpg",1770,996,false]},"uagb_author_info":{"display_name":"Sven Woltmann","author_link":"https:\/\/www.happycoders.eu\/de\/author\/sven\/"},"uagb_comment_info":0,"uagb_excerpt":"Wie implementiert man in Java einen Stack basierend auf einem Array (ohne Java-Collections-Klassen)? Wie w\u00e4chst das Array bei Bedarf?","public_identification_id":"5bc4b0ffa8c041f9897e8c133c6c68c3","private_identification_id":"20de3ae782e74ff7a2c59077660565d3","_links":{"self":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/28083","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=28083"}],"version-history":[{"count":10,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/28083\/revisions"}],"predecessor-version":[{"id":28689,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/28083\/revisions\/28689"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media\/28550"}],"wp:attachment":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media?parent=28083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/categories?post=28083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/tags?post=28083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}