{"id":12174,"date":"2018-11-27T19:24:04","date_gmt":"2018-11-27T18:24:04","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=12174"},"modified":"2018-11-27T19:24:04","modified_gmt":"2018-11-27T18:24:04","slug":"java-quickie-iterieren-mit-foreach-ueber-eine-collection-von-mindmaps-mit-lambda-expressions","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=12174","title":{"rendered":"Java Quickie: Iterieren mit forEach \u00fcber eine Collection (von Mindmaps) mit Lambda expressions"},"content":{"rendered":"<p>Ab Java 8 kann mit der <strong>forEach<\/strong> Methode \u00fcber einen <strong>Stream<\/strong> iteriert werden und das mit <a href=\"https:\/\/en.wikipedia.org\/wiki\/Anonymous_function#Java\" rel=\"noopener\" target=\"_blank\">Lambdas<\/a>.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/02\/Test-Pyramid.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/02\/Test-Pyramid.png\" alt=\"\" width=\"2732\" height=\"2048\" class=\"aligncenter size-full wp-image-9704\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/02\/Test-Pyramid.png 2732w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/02\/Test-Pyramid-300x225.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/02\/Test-Pyramid-768x576.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/02\/Test-Pyramid-1024x768.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Hier mal eine Gegen\u00fcberstellung als JUnit Test: <\/p>\n<pre class=\"lang:java decode:true \" >\r\n\r\n@Test\r\npublic void streamForEachVsForCollectionTest() {\r\n\r\n\t\t\/\/ Liste mit Mindmaps erstellen\r\n\t\tList&lt;Mindmap&gt; maps = new ArrayList&lt;&gt;();\r\n\r\n\t\t\/\/ Mindmap 1 erstellen und der Liste hinzuf\u00fcgen\r\n\t\tMindmap m1 = new Mindmap();\r\n\t\tm1.setPath(Paths.get(\"mindmap-eins.itmz\"));\r\n\t\tmaps.add(m1);\r\n\r\n\t\t\/\/ Mindmap 2 erstellen und der Liste hinzuf\u00fcgen\r\n\t\tMindmap m2 = new Mindmap();\r\n\t\tm2.setPath(Paths.get(\"mindmap-zwei.itmz\"));\r\n\t\tmaps.add(m2);\r\n\r\n\t\tSystem.out.println(\"Altes iterieren mit for Schleife:\");\r\n\t\tList&lt;Mindmap&gt; ergebnis = new ArrayList&lt;&gt;();\r\n\t\t\/\/ in for-Schleife Ergebnis anzeigen und Ergebnis der Liste hinzuf\u00fcgen\r\n\t\tfor (Mindmap mindmap : maps) {\r\n\t\t\tSystem.out.println(mindmap);\r\n\t\t\tergebnis.add(mindmap);\r\n\t\t}\r\n\t\tassertArrayEquals(maps.toArray(), ergebnis.toArray());\r\n\t\tergebnis.clear();\r\n\r\n\t\tSystem.out.println(\"Neu mit Stream API von Java 8 iterieren:\");\r\n\t\t\/\/ iterieren mit forEach \u00fcber eine Collection von Mindmaps und Lambda\r\n\t\t\/\/ expressions\r\n\t\tmaps.stream().forEach(mindmap -&gt; {\r\n\t\t\tSystem.out.println(mindmap);\r\n\t\t\tergebnis.add(mindmap);\r\n\t\t});\r\n\r\n\t\tassertArrayEquals(maps.toArray(), ergebnis.toArray());\r\n\t}\r\n<\/pre>\n<p>Und das Mindmap BE:<!--more--><\/p>\n<pre class=\"lang:java decode:true \" >\r\n\r\npackage de.wenzlaff.mindmap.be;\r\n\r\nimport java.nio.file.Path;\r\nimport java.text.DateFormat;\r\nimport java.util.Objects;\r\n\r\n\/**\r\n * Eine Mindmap BE.\r\n * \r\n * @author Thomas Wenzlaff\r\n *\r\n *\/\r\npublic class Mindmap implements Comparable&lt;Mindmap&gt; {\r\n\r\n\tprivate Path path;\r\n\r\n\tpublic Path getPath() {\r\n\t\treturn path;\r\n\t}\r\n\r\n\tpublic void setPath(Path path) {\r\n\t\tthis.path = path;\r\n\t}\r\n\r\n\tpublic String getErstelldatum() {\r\n\t\treturn DateFormat.getInstance().format(getPath().toFile().lastModified());\r\n\t}\r\n\r\n\t\/**\r\n\t * LIefert den Namen der Mindmap Datei.\r\n\t * \r\n\t * @return der Name der Datei.\r\n\t *\/\r\n\tpublic String getName() {\r\n\t\treturn getPath().getFileName().toString();\r\n\t}\r\n\r\n\t\/**\r\n\t * Liefert die Gr\u00f6\u00dfe der Mindmap Datei in kB (1000).\r\n\t * \r\n\t * Im Template Aufruf z.B.: (${mindmap.size} kB)\r\n\t * \r\n\t * @return die Gr\u00f6\u00dfe der Datei in kB.\r\n\t *\/\r\n\tpublic String getSize() {\r\n\t\treturn \"\" + getPath().toFile().length() \/ 1000;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\treturn Objects.hash(path);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (this == obj)\r\n\t\t\treturn true;\r\n\t\tif (obj == null)\r\n\t\t\treturn false;\r\n\t\tif (getClass() != obj.getClass())\r\n\t\t\treturn false;\r\n\t\tMindmap other = (Mindmap) obj;\r\n\t\treturn Objects.equals(path, other.path);\r\n\t}\r\n\r\n\t\/**\r\n\t * Der Name der Mindmap ohne Prefix.\r\n\t *\/\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn getName().substring(0, getName().length() - 5);\r\n\t}\r\n\r\n\t\/**\r\n\t * Zum sortieren von A-Z nach Namen.\r\n\t *\/\r\n\t@Override\r\n\tpublic int compareTo(Mindmap mindmap) {\r\n\t\treturn getName().compareTo(mindmap.getName());\r\n\t}\r\n\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Ab Java 8 kann mit der forEach Methode \u00fcber einen Stream iteriert werden und das mit Lambdas. Hier mal eine Gegen\u00fcberstellung als JUnit Test: @Test public void streamForEachVsForCollectionTest() { \/\/ Liste mit Mindmaps erstellen List&lt;Mindmap&gt; maps = new ArrayList&lt;&gt;(); \/\/ Mindmap 1 erstellen und der Liste hinzuf\u00fcgen Mindmap m1 = new Mindmap(); m1.setPath(Paths.get(&#8222;mindmap-eins.itmz&#8220;)); maps.add(m1); \/\/ &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=12174\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eJava Quickie: Iterieren mit forEach \u00fcber eine Collection (von Mindmaps) mit Lambda expressions\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[220,5,1361],"tags":[3454,3456,3453,3452,2178,3455],"class_list":["post-12174","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","category-java-8","tag-collection","tag-expressions","tag-foreach","tag-iterieren","tag-java","tag-lambda"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/12174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12174"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/12174\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12174"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}