{"id":10743,"date":"2024-03-14T12:44:52","date_gmt":"2024-03-14T12:44:52","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/"},"modified":"2025-08-04T03:22:45","modified_gmt":"2025-08-04T03:22:45","slug":"what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/","title":{"rendered":"Java Stream: Group, Sort, Get First Value"},"content":{"rendered":"<p>In Java, you can utilize the Stream API to group, sort, and retrieve the first value. Here is an example code:<\/p>\n<p>Suppose there is a list of objects of type List<Person>, each Person object having two properties: name and age. Now, the goal is to group by age property and sort by name property within each group, and then retrieve the first value from each group.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">import<\/span> java.util.List;\r\n<span class=\"hljs-keyword\">import<\/span> java.util.Map;\r\n<span class=\"hljs-keyword\">import<\/span> java.util.stream.Collectors;\r\n\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">Main<\/span> {\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">main<\/span><span class=\"hljs-params\">(String[] args)<\/span> {\r\n        List&lt;Person&gt; personList = List.of(\r\n                <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Person<\/span>(<span class=\"hljs-string\">\"Alice\"<\/span>, <span class=\"hljs-number\">25<\/span>),\r\n                <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Person<\/span>(<span class=\"hljs-string\">\"Bob\"<\/span>, <span class=\"hljs-number\">30<\/span>),\r\n                <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Person<\/span>(<span class=\"hljs-string\">\"Charlie\"<\/span>, <span class=\"hljs-number\">25<\/span>),\r\n                <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Person<\/span>(<span class=\"hljs-string\">\"David\"<\/span>, <span class=\"hljs-number\">30<\/span>)\r\n        );\r\n\r\n        Map&lt;Integer, Person&gt; result = personList.stream()\r\n                .collect(Collectors.groupingBy(Person::getAge,\r\n                        Collectors.collectingAndThen(Collectors.minBy((p1, p2) -&gt; p1.getName().compareTo(p2.getName())), p -&gt; p.get())));\r\n\r\n        System.out.println(result);\r\n    }\r\n}\r\n\r\n<span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">Person<\/span> {\r\n    <span class=\"hljs-keyword\">private<\/span> String name;\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-type\">int<\/span> age;\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title function_\">Person<\/span><span class=\"hljs-params\">(String name, <span class=\"hljs-type\">int<\/span> age)<\/span> {\r\n        <span class=\"hljs-built_in\">this<\/span>.name = name;\r\n        <span class=\"hljs-built_in\">this<\/span>.age = age;\r\n    }\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> String <span class=\"hljs-title function_\">getName<\/span><span class=\"hljs-params\">()<\/span> {\r\n        <span class=\"hljs-keyword\">return<\/span> name;\r\n    }\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-type\">int<\/span> <span class=\"hljs-title function_\">getAge<\/span><span class=\"hljs-params\">()<\/span> {\r\n        <span class=\"hljs-keyword\">return<\/span> age;\r\n    }\r\n\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> String <span class=\"hljs-title function_\">toString<\/span><span class=\"hljs-params\">()<\/span> {\r\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-string\">\"Person{name='\"<\/span> + name + <span class=\"hljs-string\">\"', age=\"<\/span> + age + <span class=\"hljs-string\">\"}\"<\/span>;\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the code above, the List<Person> is first converted to a Stream<Person> using the stream() method, and then grouping and collecting is done on the Stream using the collect() method. During grouping, the groupingBy() method from Collectors is used to group by age property, and then the collectingAndThen() method from Collectors is used to get the first value of each group by comparing the size of the name property. Finally, the results are printed out.<\/p>\n<p>The execution result will be displayed as:<\/p>\n<pre class=\"post-pre\"><code>{25=Person{name='Alice', age=25}, 30=Person{name='Bob', age=30}}\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>In Java, you can utilize the Stream API to group, sort, and retrieve the first value. Here is an example code: Suppose there is a list of objects of type List, each Person object having two properties: name and age. Now, the goal is to group by age property and sort by name property within [&hellip;]<\/p>\n","protected":false},"author":13,"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":[1],"tags":[13552,13541,87,3568,423],"class_list":["post-10743","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-first-value","tag-grouping","tag-java","tag-sorting","tag-stream-api"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java Stream: Group, Sort, Get First Value - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Group, sort, and retrieve the first value in Java using Stream API. See example code for grouping by age and sorting by name.\" \/>\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.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java Stream: Group, Sort, Get First Value\" \/>\n<meta property=\"og:description\" content=\"Group, sort, and retrieve the first value in Java using Stream API. See example code for grouping by age and sorting by name.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-14T12:44:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-04T03:22:45+00:00\" \/>\n<meta name=\"author\" content=\"Isabella Edwards\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Isabella Edwards\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/\"},\"author\":{\"name\":\"Isabella Edwards\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\"},\"headline\":\"Java Stream: Group, Sort, Get First Value\",\"datePublished\":\"2024-03-14T12:44:52+00:00\",\"dateModified\":\"2025-08-04T03:22:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/\"},\"wordCount\":155,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"First Value\",\"Grouping\",\"Java\",\"sorting\",\"Stream API\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/\",\"name\":\"Java Stream: Group, Sort, Get First Value - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T12:44:52+00:00\",\"dateModified\":\"2025-08-04T03:22:45+00:00\",\"description\":\"Group, sort, and retrieve the first value in Java using Stream API. See example code for grouping by age and sorting by name.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Stream: Group, Sort, Get First Value\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\",\"name\":\"Isabella Edwards\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"caption\":\"Isabella Edwards\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Java Stream: Group, Sort, Get First Value - Blog - Silicon Cloud","description":"Group, sort, and retrieve the first value in Java using Stream API. See example code for grouping by age and sorting by name.","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.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/","og_locale":"en_US","og_type":"article","og_title":"Java Stream: Group, Sort, Get First Value","og_description":"Group, sort, and retrieve the first value in Java using Stream API. See example code for grouping by age and sorting by name.","og_url":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T12:44:52+00:00","article_modified_time":"2025-08-04T03:22:45+00:00","author":"Isabella Edwards","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Isabella Edwards","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/"},"author":{"name":"Isabella Edwards","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd"},"headline":"Java Stream: Group, Sort, Get First Value","datePublished":"2024-03-14T12:44:52+00:00","dateModified":"2025-08-04T03:22:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/"},"wordCount":155,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["First Value","Grouping","Java","sorting","Stream API"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/","url":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/","name":"Java Stream: Group, Sort, Get First Value - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T12:44:52+00:00","dateModified":"2025-08-04T03:22:45+00:00","description":"Group, sort, and retrieve the first value in Java using Stream API. See example code for grouping by age and sorting by name.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-method-to-group-sort-and-retrieve-the-first-value-in-java\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Java Stream: Group, Sort, Get First Value"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd","name":"Isabella Edwards","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","caption":"Isabella Edwards"},"url":"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/10743","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=10743"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/10743\/revisions"}],"predecessor-version":[{"id":154512,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/10743\/revisions\/154512"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=10743"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=10743"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=10743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}