{"id":5044,"date":"2018-10-24T15:51:35","date_gmt":"2018-10-24T10:21:35","guid":{"rendered":"https:\/\/www.innovationm.com\/blog\/?p=5044"},"modified":"2019-01-04T12:54:32","modified_gmt":"2019-01-04T07:24:32","slug":"concept-of-stream-api-java1-8","status":"publish","type":"post","link":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/","title":{"rendered":"Concept of Stream API Java 1.8"},"content":{"rendered":"<p style=\"text-align: justify;\">Stream concept is introduced in java 1.8 and present in java.util.stream package.It is used to process the object from collection or any group of objects or data source. We can easily understand java stream concept by it&#8217;s name stream, In stream water flows from one water source to destination and we can perform some operations like filtering, collecting etc on stream to get useful water,Same in java stream concept we can think object flows from one object source to destination by Stream pipelines (A stream pipeline is composed of a stream source, zero or more intermediate operations, and a terminal operation).<\/p>\n<p>We should be familiar with some concept before going to further in stream concept and remember one thing streams don\u2019t actually store elements;\u00a0 they are computed on demand.<\/p>\n<p>1&gt; C.stream() &#8211; we are going to get an stream object where C is collection object.<\/p>\n<p>2&gt; filter()- used to do filtering based on predicate(predicate is nothing but boolean condition, basically it is a functional interface so it can be replaced by lambda expression)<\/p>\n<p>3&gt; collect()- it is a terminal operation use to collect filtered or mapped data. Example-<\/p>\n<pre class=\"lang:default decode:true\">\t\tArrayList&lt;Integer&gt; arrayList = new ArrayList&lt;Integer&gt;();\r\n\t\tarrayList.add(0);\r\n\t\tarrayList.add(10);\r\n\t\tarrayList.add(20);\r\n\t\tarrayList.add(5);\r\n\t\tarrayList.add(15);\r\n\t\tarrayList.add(25);\r\n\t\tSystem.out.println(arrayList);<\/pre>\n<p>output will be [0,10,20,5,15,25]. Now,we want to get a new\u00a0 ArrayList of integer which contains only even integers from existing arrayList object. Here, how we process collection object without stream concept<\/p>\n<pre class=\"lang:default decode:true\">\t\t\t\tList&lt;Integer&gt; list = new ArrayList&lt;Integer&gt;();\r\n\t\t\t\tfor(Integer i:arrayList){\r\n\t\t\t\t\tif(i%2 == 0)\r\n\t\t\t\t\tlist.add(i);\r\n\t\t\t\t}\r\n\t\t\t\t\t\tSystem.out.println(arrayList);<\/pre>\n<p>output will be [0,10,20]<\/p>\n<p>with stream concept-<\/p>\n<pre class=\"lang:default decode:true\">List&lt;Integer&gt; list = arrayList.stream().filter(i-&gt;i%2==0).collect(Collectors.toList());\r\n\t\tSystem.out.println(arrayList);<\/pre>\n<p>output will be [0,10,20].In collection if we perform bulk operation then highly recommended to use stream concept.<\/p>\n<p>some more useful method of stream concept-<\/p>\n<p>4&gt; map()- for every object if we want to perform some action and want some result object then we use map method if we want to increase all the arrayList data by 5 then we can use this function.<\/p>\n<pre class=\"lang:default decode:true\">List&lt;Integer&gt; l = arrayList.stream().map(i-&gt; i+5).collect(Collectors.toList());<\/pre>\n<p>it always take functional interface(interface which contains only one method) so we can replace it by lambda expression.<\/p>\n<p>5&gt; count() &#8211; use to count how many objects are there in stream ( not in data source).<\/p>\n<pre class=\"lang:default decode:true\">\tlong noOfEvenInteger = arrayList.stream().filter(i-&gt; i%2!=0).count();<\/pre>\n<p>6&gt; sorted() &#8211; use to perform sorting in ascending order.<\/p>\n<pre class=\"lang:default decode:true\">List&lt;Integer&gt; l = arrayList.stream().sorted().collect(Collectors.toList()); return an ascending order list.<\/pre>\n<p>for customization we go for comparator concept.comparator is also a functional interface so we can replace it by lambda expression.<\/p>\n<p>Comparator &#8211; it contains compare() method and we can replace it by lambda expression compare(obj1, obj2)-\u00a0\u00a0 \u00a0 return -ve if obj1 has to come before obj2;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return +ve if obj1 has to come after obj2;\u00a0 \u00a0return 0 if both are equal;<\/p>\n<p>we perform sorting in desc order here, what we do inside compare method (i1, i2)-&gt; (i1&lt;i2)?1:(i1 &gt; i2)?-1:0 . We compare two object i1 and i2 if i1 is smaller than i2 it means i1 has to come before i2, so it will return +ve else it check i1 is bigger or not if yes it means i1 has to come after i2, so it will return -ve and if both are equal then it will return 0;<\/p>\n<pre class=\"lang:default decode:true \">List&lt;Integer&gt; list = arrayList.stream().sorted((i1,i2)-&gt;(i1, i2)-&gt; (i1&lt;i2)?1:(i1 &gt; i2)?-1:0).collect(Collectors.toList());<\/pre>\n<p>7&gt; forEach() &#8211; for every element if we want to perform some functionality.<\/p>\n<pre class=\"lang:default decode:true \">arrayList.stream().forEach(System.out::println);<\/pre>\n<p>it will print all object.We can call our own method also.<\/p>\n<pre class=\"lang:default decode:true\">Consumer&lt;Integer&gt; fun = i-&gt;{System.out.println(\"square of\"+i+\"is = \"+(i*i))};\r\narrayList.stream().forEach(fun);<\/pre>\n<p>8&gt; toArray() &#8211; to convert stream of object into array.<\/p>\n<pre class=\"lang:default decode:true\">Integer[] arr =\tarrayList.stream().toArray(Integer::new);<\/pre>\n<p>9&gt; Stream.of(arr) &#8211; use to get stream from array or other group of data;<\/p>\n<pre class=\"lang:default decode:true \">Stream s = stream.of(10,1,2,12,34);\r\ns.forEach(System.out::println);<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Stream concept is introduced in java 1.8 and present in java.util.stream package.It is used to process the object from collection or any group of objects or data source. We can easily understand java stream concept by it&#8217;s name stream, In stream water flows from one water source to destination and we can perform some operations [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5052,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,256,71],"tags":[310,308,309],"class_list":["post-5044","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-java-application","category-mobile","tag-java1-8","tag-stream","tag-stream-in-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Concept of Stream API Java 1.8 - InnovationM - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Concept of Stream API Java 1.8 - InnovationM - Blog\" \/>\n<meta property=\"og:description\" content=\"Stream concept is introduced in java 1.8 and present in java.util.stream package.It is used to process the object from collection or any group of objects or data source. We can easily understand java stream concept by it&#8217;s name stream, In stream water flows from one water source to destination and we can perform some operations [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/\" \/>\n<meta property=\"og:site_name\" content=\"InnovationM - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-24T10:21:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-01-04T07:24:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/10\/java-streams-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1152\" \/>\n\t<meta property=\"og:image:height\" content=\"642\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"InnovationM Admin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"InnovationM Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/\"},\"author\":{\"name\":\"InnovationM Admin\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"headline\":\"Concept of Stream API Java 1.8\",\"datePublished\":\"2018-10-24T10:21:35+00:00\",\"dateModified\":\"2019-01-04T07:24:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/\"},\"wordCount\":544,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/java-streams-1.png\",\"keywords\":[\"java1.8\",\"stream\",\"stream in java\"],\"articleSection\":[\"Android\",\"Java Application\",\"Mobile\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/\",\"name\":\"Concept of Stream API Java 1.8 - InnovationM - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/java-streams-1.png\",\"datePublished\":\"2018-10-24T10:21:35+00:00\",\"dateModified\":\"2019-01-04T07:24:32+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/java-streams-1.png\",\"contentUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/java-streams-1.png\",\"width\":1152,\"height\":642,\"caption\":\"java streams\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/concept-of-stream-api-java1-8\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Concept of Stream API Java 1.8\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\",\"name\":\"InnovationM - Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\",\"name\":\"InnovationM Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"caption\":\"InnovationM Admin\"},\"sameAs\":[\"http:\\\/\\\/www.innovationm.com\\\/\"],\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/author\\\/innovationmadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Concept of Stream API Java 1.8 - InnovationM - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/","og_locale":"en_US","og_type":"article","og_title":"Concept of Stream API Java 1.8 - InnovationM - Blog","og_description":"Stream concept is introduced in java 1.8 and present in java.util.stream package.It is used to process the object from collection or any group of objects or data source. We can easily understand java stream concept by it&#8217;s name stream, In stream water flows from one water source to destination and we can perform some operations [&hellip;]","og_url":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/","og_site_name":"InnovationM - Blog","article_published_time":"2018-10-24T10:21:35+00:00","article_modified_time":"2019-01-04T07:24:32+00:00","og_image":[{"width":1152,"height":642,"url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/10\/java-streams-1.png","type":"image\/png"}],"author":"InnovationM Admin","twitter_misc":{"Written by":"InnovationM Admin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/#article","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/"},"author":{"name":"InnovationM Admin","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"headline":"Concept of Stream API Java 1.8","datePublished":"2018-10-24T10:21:35+00:00","dateModified":"2019-01-04T07:24:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/"},"wordCount":544,"commentCount":0,"image":{"@id":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/10\/java-streams-1.png","keywords":["java1.8","stream","stream in java"],"articleSection":["Android","Java Application","Mobile"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/","url":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/","name":"Concept of Stream API Java 1.8 - InnovationM - Blog","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/#primaryimage"},"image":{"@id":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/10\/java-streams-1.png","datePublished":"2018-10-24T10:21:35+00:00","dateModified":"2019-01-04T07:24:32+00:00","author":{"@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"breadcrumb":{"@id":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/#primaryimage","url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/10\/java-streams-1.png","contentUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/10\/java-streams-1.png","width":1152,"height":642,"caption":"java streams"},{"@type":"BreadcrumbList","@id":"https:\/\/www.innovationm.com\/blog\/concept-of-stream-api-java1-8\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.innovationm.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Concept of Stream API Java 1.8"}]},{"@type":"WebSite","@id":"https:\/\/www.innovationm.com\/blog\/#website","url":"https:\/\/www.innovationm.com\/blog\/","name":"InnovationM - Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.innovationm.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed","name":"InnovationM Admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","caption":"InnovationM Admin"},"sameAs":["http:\/\/www.innovationm.com\/"],"url":"https:\/\/www.innovationm.com\/blog\/author\/innovationmadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/5044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/comments?post=5044"}],"version-history":[{"count":0,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/5044\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media\/5052"}],"wp:attachment":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media?parent=5044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/categories?post=5044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/tags?post=5044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}