<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gowtham Kalyan</title>
    <description>The latest articles on DEV Community by Gowtham Kalyan (@gowtham_kalyan_a0f7df04c1).</description>
    <link>https://dev.to/gowtham_kalyan_a0f7df04c1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3766358%2F6918e6c8-f156-4dec-8a80-13c8def807ef.png</url>
      <title>DEV Community: Gowtham Kalyan</title>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gowtham_kalyan_a0f7df04c1"/>
    <language>en</language>
    <item>
      <title>Builder Design Pattern in Java.</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Sat, 04 Apr 2026 09:04:45 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/builder-design-pattern-in-java-22p1</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/builder-design-pattern-in-java-22p1</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When creating complex objects in &lt;a href="https://dev.to/zeeshanali0704/builder-design-pattern-in-java-a-complete-guide-2l41"&gt;Java &lt;/a&gt;with many optional parameters, constructors become messy and hard to manage. This leads to unreadable code, bugs, and poor maintainability.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Builder Pattern&lt;/strong&gt; solves this problem by allowing you to construct objects step-by-step, making the code more readable, flexible, and scalable.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Builder Pattern?
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Builder Pattern&lt;/strong&gt; is a creational design pattern that separates the construction of a complex object from its representation, allowing you to build objects step by step.&lt;/p&gt;

&lt;p&gt;👉 In simple terms:&lt;br&gt;
&lt;strong&gt;“Instead of passing everything in a constructor, you build the object piece by piece.”&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Real-Time Problem
&lt;/h2&gt;

&lt;p&gt;In my decade of teaching Java, one common issue developers face is handling constructors like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Harish"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Hyderabad"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"India"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"9999999999"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Problems:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Hard to remember parameter order&lt;/li&gt;
&lt;li&gt; Difficult to read&lt;/li&gt;
&lt;li&gt; Not flexible for optional fields&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Solution: Builder Pattern
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Builder&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Harish"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;city&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hyderabad"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;country&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"India"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;phone&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"9999999999"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isActive&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ Much cleaner&lt;br&gt;
✔ More readable&lt;br&gt;
✔ Easy to maintain&lt;/p&gt;


&lt;h2&gt;
  
  
  Step-by-Step Implementation
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Step 1: Create the Main Class
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;isActive&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Private constructor&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nf"&gt;User&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Builder&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;city&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;country&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;country&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;phone&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;phone&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isActive&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isActive&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Create Static Builder Class
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Builder&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

        &lt;span class="c1"&gt;// Required fields&lt;/span&gt;
        &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Optional fields&lt;/span&gt;
        &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;isActive&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;Builder&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;

        &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Builder&lt;/span&gt; &lt;span class="nf"&gt;city&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;

        &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Builder&lt;/span&gt; &lt;span class="nf"&gt;country&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;country&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;

        &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Builder&lt;/span&gt; &lt;span class="nf"&gt;phone&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;phone&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;

        &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Builder&lt;/span&gt; &lt;span class="nf"&gt;isActive&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;isActive&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isActive&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;isActive&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;

        &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;User&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Expert Explanation
&lt;/h2&gt;

&lt;p&gt;In real-world enterprise applications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Builder improves &lt;strong&gt;code readability&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Helps create &lt;strong&gt;immutable objects&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Avoids &lt;strong&gt;constructor explosion problem&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our students in Hyderabad often switch to Builder after struggling with large DTO classes in Spring Boot projects.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why is Builder Pattern Useful?
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Handles Complex Object Creation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Many fields (required + optional)&lt;/li&gt;
&lt;li&gt;Clean and structured construction&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  2. Improves Readability
&lt;/h3&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Harish"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Builder&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Harish"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  3. Supports Immutability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Object state is set only once&lt;/li&gt;
&lt;li&gt;No setters required&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. Avoids Telescoping Constructor Problem
&lt;/h3&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  5. Flexible and Maintainable
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Easy to add new fields&lt;/li&gt;
&lt;li&gt;No breaking changes&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Real-Time Use Cases
&lt;/h2&gt;

&lt;p&gt;Builder Pattern is widely used in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DTO objects in Spring Boot&lt;/li&gt;
&lt;li&gt;REST API request/response models&lt;/li&gt;
&lt;li&gt;Configuration objects&lt;/li&gt;
&lt;li&gt;Immutable classes&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example Scenarios
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Creating user profiles&lt;/li&gt;
&lt;li&gt;Building API request payloads&lt;/li&gt;
&lt;li&gt;Constructing complex queries&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Edge Cases You Should Know
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ❗ 1. Missing Required Fields
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Builder&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ Add validation inside &lt;code&gt;build()&lt;/code&gt; method&lt;/p&gt;




&lt;h3&gt;
  
  
  ❗ 2. Mutable Objects Inside Builder
&lt;/h3&gt;

&lt;p&gt;If fields are mutable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;roles&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ Use defensive copies to avoid external modification&lt;/p&gt;




&lt;h3&gt;
  
  
  ❗ 3. Overuse in Simple Classes
&lt;/h3&gt;

&lt;p&gt;Builder is not needed for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Small objects (2–3 fields)&lt;/li&gt;
&lt;li&gt;Simple POJOs&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Builder vs Other Patterns
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Builder Pattern&lt;/th&gt;
&lt;th&gt;Factory Pattern&lt;/th&gt;
&lt;th&gt;Singleton Pattern&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Purpose&lt;/td&gt;
&lt;td&gt;Build complex objects&lt;/td&gt;
&lt;td&gt;Create objects&lt;/td&gt;
&lt;td&gt;Single instance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Object Creation&lt;/td&gt;
&lt;td&gt;Step-by-step&lt;/td&gt;
&lt;td&gt;Centralized&lt;/td&gt;
&lt;td&gt;One-time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flexibility&lt;/td&gt;
&lt;td&gt;Very High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use Case&lt;/td&gt;
&lt;td&gt;Complex objects&lt;/td&gt;
&lt;td&gt;Dynamic objects&lt;/td&gt;
&lt;td&gt;Shared resource&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  When to Use Builder Pattern
&lt;/h2&gt;

&lt;p&gt;Use it when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Object has many parameters&lt;/li&gt;
&lt;li&gt;Some parameters are optional&lt;/li&gt;
&lt;li&gt;You want immutable objects&lt;/li&gt;
&lt;li&gt;You need readable object creation&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  When NOT to Use
&lt;/h2&gt;

&lt;p&gt;Avoid when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Object is simple&lt;/li&gt;
&lt;li&gt;Few fields only&lt;/li&gt;
&lt;li&gt;No optional parameters&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Best Practices (From Experience)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Make class immutable&lt;/li&gt;
&lt;li&gt;Validate inside &lt;code&gt;build()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Use meaningful method names&lt;/li&gt;
&lt;li&gt;Avoid exposing setters&lt;/li&gt;
&lt;/ul&gt;







&lt;h2&gt;
  
  
  Quick FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. What problem does Builder Pattern solve?
&lt;/h3&gt;

&lt;p&gt;It solves complex object creation with many optional parameters.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Is Builder Pattern thread-safe?
&lt;/h3&gt;

&lt;p&gt;Yes, if the object is immutable.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Can Builder replace constructors?
&lt;/h3&gt;

&lt;p&gt;Yes, especially for complex objects.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Is Builder used in Spring Boot?
&lt;/h3&gt;

&lt;p&gt;Yes, commonly used for DTOs and configurations.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. What is the difference between Builder and Factory?
&lt;/h3&gt;

&lt;p&gt;Builder constructs step-by-step, Factory creates objects directly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;The Builder Pattern is one of the most practical and widely used design patterns in modern Java development. It improves readability, maintainability, and scalability.&lt;/p&gt;

&lt;p&gt;Mastering it will make your code cleaner and more professional—especially in real-time enterprise applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start Your Journey Today
&lt;/h2&gt;

&lt;p&gt;Enroll in the&lt;a href="https://www.ashokit.in/courses/core-java-online-training" rel="noopener noreferrer"&gt; Best AI powered Core JAVA Online Training in Hyderabad&lt;/a&gt; and gain real-time skills that companies are actually looking for.&lt;/p&gt;

&lt;p&gt;📍 Follow the complete roadmap to become a Java Full Stack Developer:&lt;br&gt;
👉 &lt;a href="https://www.ashokit.in/java-full-stack-developer-roadmap" rel="noopener noreferrer"&gt;https://www.ashokit.in/java-full-stack-developer-roadmap&lt;/a&gt;&lt;/p&gt;

</description>
      <category>designpatterns</category>
      <category>java</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>What Happens Internally When You Call String intern in Java</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Thu, 02 Apr 2026 07:17:05 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/what-happens-internally-when-you-call-string-intern-in-java-4c81</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/what-happens-internally-when-you-call-string-intern-in-java-4c81</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;1. Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;intern&lt;/code&gt; method in Java is used to manage memory efficiently by storing string objects in a special memory area called the String Pool. Understanding how &lt;code&gt;String.intern()&lt;/code&gt; works internally is important for writing optimized Java applications. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. What is String Pool&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The String Pool is a special memory area in the heap where unique string literals are stored. It helps in saving memory by reusing existing string objects instead of creating new ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Stores unique string values.&lt;br&gt;
Avoids duplicate objects.&lt;br&gt;
Improves memory efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. What is String intern Method&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;intern()&lt;/code&gt; method checks whether a string already exists in the String Pool. If it exists, it returns the reference of that string. If not, it adds the string to the pool and returns its reference.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Syntax&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;java&lt;/span&gt;
&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;intern&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Returns pooled string reference.&lt;br&gt;
Adds string to pool if not present.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. Internal Working of String intern&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When you call &lt;code&gt;intern()&lt;/code&gt; on a string&lt;/p&gt;

&lt;p&gt;The JVM checks the String Pool.&lt;br&gt;
If the string already exists, it returns the existing reference.&lt;br&gt;
If the string does not exist, it is added to the pool.&lt;br&gt;
A reference to the pooled string is returned.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;
&lt;span class="n"&gt;java&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"q4k8xp"&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;InternExample&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;intern&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;s3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;s3&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Explanation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;s1 creates a new object in heap.&lt;br&gt;
intern adds or retrieves the string from pool.&lt;br&gt;
s3 directly refers to pooled string.&lt;br&gt;
Both s2 and s3 point to same reference.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. Behavior Before and After Java 7&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before &lt;a href="https://www.ashokit.in/courses/core-java-online-training" rel="noopener noreferrer"&gt;Java &lt;/a&gt;7&lt;br&gt;
String Pool was stored in PermGen memory.&lt;/p&gt;

&lt;p&gt;After Java 7&lt;br&gt;
String Pool is moved to heap memory, making it more flexible and scalable.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Improved memory management.&lt;br&gt;
Better scalability.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;6. Advantages of Using intern Method&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Reduces memory usage.&lt;br&gt;
Avoids duplicate string objects.&lt;br&gt;
Improves performance in certain cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;7. When to Use intern Method&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Use it when there are many duplicate strings.&lt;br&gt;
Useful in memory-sensitive applications.&lt;br&gt;
Avoid overusing it unnecessarily.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;8. Common Mistakes to Avoid&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Assuming intern always improves performance.&lt;br&gt;
Using it excessively can increase overhead.&lt;br&gt;
Not understanding heap and pool behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;9. Key Takeaways&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;intern method works with String Pool.&lt;br&gt;
Ensures only one copy of string exists.&lt;br&gt;
Returns reference from pool.&lt;br&gt;
Helps optimize memory usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;10. Useful Resources&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Learn more from the AI powered Core JAVA Online Training in Hyderabad.&lt;br&gt;
&lt;a href="https://www.ashokit.in/courses/core-java-online-training" rel="noopener noreferrer"&gt;https://www.ashokit.in/courses/core-java-online-training&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow the Java Full Stack Developer Roadmap to become job ready.&lt;br&gt;
&lt;a href="https://www.ashokit.in/java-full-stack-developer-roadmap" rel="noopener noreferrer"&gt;https://www.ashokit.in/java-full-stack-developer-roadmap&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;11. FAQ Section&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;11.1 What does String intern do in Java&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;It returns a reference from the String Pool if the string exists, otherwise it adds the string to the pool and returns the reference.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;11.2 Where is the String Pool stored&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;After Java 7, the String Pool is stored in heap memory.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;11.3 Does intern create a new object&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;It creates a new object in the pool only if it does not already exist.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;11.4 Why use intern method&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;It helps reduce memory usage by avoiding duplicate string objects.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;11.5 Is intern method always recommended&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;No, it should be used only when necessary because it may add overhead.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;12. Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;String.intern()&lt;/code&gt; method plays a key role in memory optimization by managing string objects in the String Pool. By understanding its internal working, you can write more efficient Java programs. To gain hands-on experience, consider learning from the AI powered Core JAVA Online Training in Hyderabad.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;13. Promotional Content&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Start learning today with the &lt;a href="https://www.ashokit.in/courses/core-java-online-training" rel="noopener noreferrer"&gt;AI powered Core JAVA Online Training in Hyderabad&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>java</category>
      <category>stringinterning</category>
      <category>jvmmemory</category>
      <category>performanceoptimization</category>
    </item>
    <item>
      <title>Difference Between map and flatMap in Java Stream API</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Wed, 01 Apr 2026 07:48:14 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/difference-between-map-and-flatmap-in-java-stream-api-5f0j</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/difference-between-map-and-flatmap-in-java-stream-api-5f0j</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;1. Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Understanding the difference between map and flatMap is very important when working with the Stream API in Java. Both are intermediate operations used to transform data, but they behave differently when handling collections.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. What is map in Stream API&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The map method is used to transform each element of a stream into another form. It takes one value and returns one value.&lt;/p&gt;

&lt;p&gt;In simple terms, map performs a one to one transformation.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example Using map&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;
&lt;span class="n"&gt;java&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"p9k2xm"&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.util.*&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MapExample&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"java"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"python"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"c++"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
            &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;map&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toUpperCase&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;
            &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;forEach&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Transforms each element.&lt;br&gt;
Returns one value for each input.&lt;br&gt;
Used for simple data transformation.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. What is flatMap in Stream API&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The flatMap method is used to transform each element into multiple elements and then flatten them into a single stream.&lt;/p&gt;

&lt;p&gt;In simple terms, flatMap performs a one to many transformation and flattens the result.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example Using flatMap&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;java&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"p7x3qd"&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.util.*&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;FlatMapExample&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
            &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Python"&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt;
            &lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"C++"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"JavaScript"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
            &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;flatMap&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;
            &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;forEach&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Transforms and flattens data.&lt;br&gt;
Handles nested collections.&lt;br&gt;
Returns a single stream.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. Key Differences Between map and flatMap&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;map&lt;/th&gt;
&lt;th&gt;flatMap&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Transformation&lt;/td&gt;
&lt;td&gt;One to one&lt;/td&gt;
&lt;td&gt;One to many&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output&lt;/td&gt;
&lt;td&gt;Stream of values&lt;/td&gt;
&lt;td&gt;Flattened stream&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use Case&lt;/td&gt;
&lt;td&gt;Simple transformation&lt;/td&gt;
&lt;td&gt;Nested collections&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complexity&lt;/td&gt;
&lt;td&gt;Simple&lt;/td&gt;
&lt;td&gt;Slightly advanced&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. When to Use map and flatMap&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Use map when each input element maps to a single output value.&lt;br&gt;
Use flatMap when each element produces multiple values or when working with nested collections.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;6. Common Mistakes to Avoid&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Using map for nested collections leads to complex structures.&lt;br&gt;
Not understanding flattening in flatMap.&lt;br&gt;
Confusing one to one and one to many transformations.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;7. Key Takeaways&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;map is used for simple transformations.&lt;br&gt;
flatMap is used for flattening nested data.&lt;br&gt;
Both are important in Stream API.&lt;br&gt;
Choosing the right method improves code readability.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;8. Useful Resources&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Learn more from the No 1 Core JAVA Online Training in ameerpet.&lt;br&gt;
&lt;a href="https://www.ashokit.in/courses/core-java-online-training" rel="noopener noreferrer"&gt;https://www.ashokit.in/courses/core-java-online-training&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow the Java Full Stack Developer Roadmap to become job ready.&lt;br&gt;
&lt;a href="https://www.ashokit.in/java-full-stack-developer-roadmap" rel="noopener noreferrer"&gt;https://www.ashokit.in/java-full-stack-developer-roadmap&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;9. FAQ Section&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;9.1 What is the difference between map and flatMap in Java&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;map transforms each element into a single value, while flatMap transforms elements into multiple values and flattens them into a single stream.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;9.2 When should I use flatMap instead of map&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Use flatMap when working with nested collections or when one input produces multiple outputs.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;9.3 Can map return multiple values&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;No, map returns only one value for each input element.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;9.4 Is flatMap more powerful than map&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;flatMap is more flexible because it can handle complex transformations and flatten nested data.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;9.5 Are map and flatMap intermediate operations&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Yes, both map and flatMap are intermediate operations in the Stream API.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;10. Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Understanding the difference between map and flatMap is essential for working effectively with &lt;a href="https://www.ashokit.in/courses/core-java-online-training" rel="noopener noreferrer"&gt;Java &lt;/a&gt;Stream API. By choosing the right method, you can simplify your code and handle complex data structures easily. To gain hands-on experience, consider joining the No 1 Core JAVA Online Training in ameerpet.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;11. Call to Action&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Start learning today with the &lt;a href="https://www.ashokit.in/courses/core-java-online-training" rel="noopener noreferrer"&gt;No 1 Core JAVA Online Training in ameerpet&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>flatmap</category>
      <category>java</category>
      <category>stream</category>
      <category>api</category>
    </item>
    <item>
      <title>How Do You Create a Custom Exception in Java?</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Tue, 31 Mar 2026 06:42:40 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/how-do-you-create-a-custom-exception-in-java-do</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/how-do-you-create-a-custom-exception-in-java-do</guid>
      <description>&lt;h3&gt;
  
  
  1. Introduction
&lt;/h3&gt;

&lt;p&gt;In &lt;a href="https://ashokitech.com/core-java-online-training/" rel="noopener noreferrer"&gt;Java&lt;/a&gt;, a &lt;strong&gt;custom exception&lt;/strong&gt; is a user-defined exception created to handle &lt;strong&gt;specific business logic errors&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of using only built-in exceptions, you can define your own exception to make your code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More readable&lt;/li&gt;
&lt;li&gt;More meaningful&lt;/li&gt;
&lt;li&gt;Easier to debug&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Why Do We Need Custom Exceptions?
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Explanation
&lt;/h4&gt;

&lt;p&gt;Sometimes built-in exceptions are not enough. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Invalid user age&lt;/li&gt;
&lt;li&gt;Insufficient balance&lt;/li&gt;
&lt;li&gt;Invalid input in business logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In such cases, custom exceptions provide &lt;strong&gt;clear and domain-specific error messages&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Steps to Create Custom Exception
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Step 1: Extend Exception Class
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;For &lt;strong&gt;checked exception&lt;/strong&gt; → extend &lt;code&gt;Exception&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;For &lt;strong&gt;unchecked exception&lt;/strong&gt; → extend &lt;code&gt;RuntimeException&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. Example (Checked Custom Exception)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Step 1: Create custom exception&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;InvalidAgeException&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Exception&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;InvalidAgeException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;super&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Step 2: Use custom exception&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CustomExceptionExample&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;InvalidAgeException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Age must be 18 or above"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="o"&gt;}&lt;/span&gt;
            &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Eligible"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;InvalidAgeException&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getMessage&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  5. Explanation of Code
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;InvalidAgeException&lt;/code&gt; extends &lt;code&gt;Exception&lt;/code&gt; → Checked exception&lt;/li&gt;
&lt;li&gt;Constructor passes message to parent class&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;throw new InvalidAgeException(...)&lt;/code&gt; → explicitly throws exception&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;catch&lt;/code&gt; block handles it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Age must be 18 or above
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  6. Example (Unchecked Custom Exception)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;InvalidAmountException&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;RuntimeException&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;InvalidAmountException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;super&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UncheckedCustomException&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;InvalidAmountException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Amount cannot be negative"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Valid amount"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  7. Explanation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Extends &lt;code&gt;RuntimeException&lt;/code&gt; → Unchecked exception&lt;/li&gt;
&lt;li&gt;No need for &lt;code&gt;try-catch&lt;/code&gt; (optional)&lt;/li&gt;
&lt;li&gt;Used for programming or validation errors&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  8. Key Points
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Custom exceptions improve &lt;strong&gt;code clarity&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Can be &lt;strong&gt;checked or unchecked&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Use meaningful names (e.g., &lt;code&gt;InvalidAgeException&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Always provide a &lt;strong&gt;clear message&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  9. Best Practices
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use checked exceptions for &lt;strong&gt;recoverable conditions&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Use unchecked exceptions for &lt;strong&gt;logic errors&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Keep exception classes &lt;strong&gt;simple and focused&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add constructors for flexibility&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  10. Summary
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Custom exceptions = user-defined exceptions&lt;/li&gt;
&lt;li&gt;Created by extending &lt;code&gt;Exception&lt;/code&gt; or &lt;code&gt;RuntimeException&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Used for handling &lt;strong&gt;specific application scenarios&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Improve readability and maintainability&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Java Full Stack Developer Roadmap
&lt;/h2&gt;

&lt;p&gt;To master exception handling and advanced Java concepts:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.ashokit.in/java-full-stack-developer-roadmap" rel="noopener noreferrer"&gt;https://www.ashokit.in/java-full-stack-developer-roadmap&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Promotional Content
&lt;/h2&gt;

&lt;p&gt;Want to master Java Exception Handling including Custom Exceptions?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://ashokitech.com/core-java-online-training/" rel="noopener noreferrer"&gt;Best Core JAVA Online Training in ameerpet&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>custom</category>
      <category>exception</category>
      <category>java</category>
    </item>
    <item>
      <title>How Does HashMap Work Internally in Java?</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Mon, 30 Mar 2026 07:35:40 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/how-does-hashmap-work-internally-in-java-38lh</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/how-does-hashmap-work-internally-in-java-38lh</guid>
      <description>&lt;h3&gt;
  
  
  1. Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;HashMap&lt;/code&gt; is one of the most important data structures in Java used to store &lt;strong&gt;key-value pairs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It provides &lt;strong&gt;constant time complexity O(1)&lt;/strong&gt; for &lt;code&gt;put()&lt;/code&gt; and &lt;code&gt;get()&lt;/code&gt; operations (on average) by using a technique called &lt;strong&gt;hashing&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Basic Working Concept
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Explanation
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;HashMap&lt;/code&gt; internally uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Array (Bucket array)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hashing (hashCode)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linked List / Tree (for collision handling)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each key-value pair is stored in a structure called a &lt;strong&gt;Node&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Internal Structure
&lt;/h3&gt;

&lt;p&gt;A simplified structure of HashMap:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Node&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;K&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="no"&gt;V&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;hash&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="no"&gt;K&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="no"&gt;V&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nc"&gt;Node&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;K&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="no"&gt;V&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Explanation
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;hash&lt;/code&gt; → hash value of the key&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;key&lt;/code&gt; → actual key&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;value&lt;/code&gt; → stored value&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;next&lt;/code&gt; → reference to next node (for collision handling)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. How put() Works
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Example
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.util.HashMap&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PutExample&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;HashMap&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;HashMap&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;();&lt;/span&gt;
        &lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;put&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;put&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Python"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step-by-Step Explanation
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hash Calculation&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;hashCode()&lt;/code&gt; is called on the key.&lt;/li&gt;
&lt;li&gt;Example: key &lt;code&gt;1&lt;/code&gt; → hash value generated.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Index Calculation&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Index = &lt;code&gt;(n - 1) &amp;amp; hash&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Determines position in the bucket array.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Store Entry&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;If bucket is empty → insert directly.&lt;/li&gt;
&lt;li&gt;If not → handle collision.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. How get() Works
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Example
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.util.HashMap&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;GetExample&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;HashMap&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;HashMap&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;();&lt;/span&gt;
        &lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;put&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Explanation
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Calculate hash of key&lt;/li&gt;
&lt;li&gt;Find bucket index&lt;/li&gt;
&lt;li&gt;Traverse nodes (if multiple)&lt;/li&gt;
&lt;li&gt;Match using &lt;code&gt;equals()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Return value&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  6. Collision Handling
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Explanation
&lt;/h4&gt;

&lt;p&gt;Collision occurs when two keys map to the same index.&lt;/p&gt;

&lt;h4&gt;
  
  
  Before &lt;a href="https://ashokitech.com/core-java-online-training" rel="noopener noreferrer"&gt;Java &lt;/a&gt;8
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Stored using &lt;strong&gt;Linked List&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  After Java 8
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;If bucket size &amp;gt; 8 → converted to &lt;strong&gt;Balanced Tree (Red-Black Tree)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Improves performance from &lt;strong&gt;O(n) → O(log n)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  7. Example of Collision
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.util.HashMap&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CollisionExample&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;HashMap&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;HashMap&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;();&lt;/span&gt;

        &lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;put&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"A"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;put&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"B"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Might collide depending on capacity&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Explanation
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Both keys may go to same bucket.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stored as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linked List OR&lt;/li&gt;
&lt;li&gt;Tree (if threshold exceeded)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  8. Important Concepts
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Load Factor
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Default: &lt;strong&gt;0.75&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Determines when to resize the HashMap&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Resizing (Rehashing)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;When capacity exceeds threshold:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New array is created (double size)&lt;/li&gt;
&lt;li&gt;All elements are rehashed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  9. Performance
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;Average Time&lt;/th&gt;
&lt;th&gt;Worst Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;put()&lt;/td&gt;
&lt;td&gt;O(1)&lt;/td&gt;
&lt;td&gt;O(log n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;get()&lt;/td&gt;
&lt;td&gt;O(1)&lt;/td&gt;
&lt;td&gt;O(log n)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  10. Key Points
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Uses &lt;strong&gt;hashCode()&lt;/strong&gt; and &lt;strong&gt;equals()&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Allows &lt;strong&gt;one null key&lt;/strong&gt; and multiple null values&lt;/li&gt;
&lt;li&gt;Not thread-safe&lt;/li&gt;
&lt;li&gt;Faster retrieval due to hashing&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  11. Real-Time Use Case
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Caching data&lt;/li&gt;
&lt;li&gt;Storing configurations&lt;/li&gt;
&lt;li&gt;Database result mapping&lt;/li&gt;
&lt;li&gt;Counting frequency of elements&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Java Full Stack Developer Roadmap
&lt;/h2&gt;

&lt;p&gt;To master concepts like HashMap, Collections, and System Design:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.ashokit.in/java-full-stack-developer-roadmap" rel="noopener noreferrer"&gt;https://www.ashokit.in/java-full-stack-developer-roadmap&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Promotional Content
&lt;/h2&gt;

&lt;p&gt;Want to deeply understand Java Collections and crack interviews?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://ashokitech.com/core-java-online-training" rel="noopener noreferrer"&gt;Top Core JAVA Online Training in 2026&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>hashmap</category>
      <category>java</category>
      <category>collisionhandling</category>
    </item>
    <item>
      <title>How Do You Design a Scalable Systems?</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Sat, 28 Mar 2026 07:14:40 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/how-do-you-design-a-scalable-systems-2am</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/how-do-you-design-a-scalable-systems-2am</guid>
      <description>&lt;p&gt;Designing a scalable system is one of the most important aspects of modern software development. A scalable system can handle increasing amounts of traffic, users, and data without compromising performance.&lt;/p&gt;




&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;What is Scalability?&lt;/li&gt;
&lt;li&gt;Types of Scalability&lt;/li&gt;
&lt;li&gt;Key Principles of Scalable System Design&lt;/li&gt;
&lt;li&gt;Core Components of a Scalable System&lt;/li&gt;
&lt;li&gt;Best Practices&lt;/li&gt;
&lt;li&gt;Real-Time Example&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;p&gt;As applications grow, they must handle more users and data. A system that works fine for 1,000 users may fail at 1 million users if not designed properly. Scalability ensures your system can grow seamlessly.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. What is Scalability?
&lt;/h2&gt;

&lt;p&gt;Scalability is the ability of a system to handle increased load by adding resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;More users accessing a website&lt;/li&gt;
&lt;li&gt;More transactions in an application&lt;/li&gt;
&lt;li&gt;Larger datasets to process&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Types of Scalability
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Vertical Scalability (Scaling Up)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Increase resources (CPU, RAM) of a single server&lt;/li&gt;
&lt;li&gt;Simple but has limits&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Horizontal Scalability (Scaling Out)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Add more servers to distribute load&lt;/li&gt;
&lt;li&gt;Preferred for large-scale systems&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Key Principles of Scalable System Design
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Load Distribution
&lt;/h3&gt;

&lt;p&gt;Use load balancers to distribute traffic across multiple servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stateless Services
&lt;/h3&gt;

&lt;p&gt;Design services so they don’t store session data locally.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database Scaling
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use replication (read replicas)&lt;/li&gt;
&lt;li&gt;Use sharding for large datasets&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Caching
&lt;/h3&gt;

&lt;p&gt;Use caching systems (e.g., Redis) to reduce database load.&lt;/p&gt;

&lt;h3&gt;
  
  
  Asynchronous Processing
&lt;/h3&gt;

&lt;p&gt;Use message queues (Kafka, RabbitMQ) for background tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Microservices Architecture
&lt;/h3&gt;

&lt;p&gt;Break application into smaller, independent services.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Core Components of a Scalable System
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Load Balancer&lt;/strong&gt; → Distributes traffic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Application Servers&lt;/strong&gt; → Handle business logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt; → Stores data (SQL/NoSQL)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache Layer&lt;/strong&gt; → Speeds up data access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Message Queue&lt;/strong&gt; → Handles async processing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CDN&lt;/strong&gt; → Delivers static content faster&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Use connection pooling&lt;/li&gt;
&lt;li&gt; Optimize database queries&lt;/li&gt;
&lt;li&gt; Monitor system performance&lt;/li&gt;
&lt;li&gt; Implement auto-scaling&lt;/li&gt;
&lt;li&gt; Ensure fault tolerance&lt;/li&gt;
&lt;li&gt; Use containerization (Docker, Kubernetes)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. Real-Time Example
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Scenario:
&lt;/h3&gt;

&lt;p&gt;A video streaming platform experiences rapid growth.&lt;/p&gt;

&lt;h3&gt;
  
  
  Solution:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use CDN → Faster video delivery&lt;/li&gt;
&lt;li&gt;Add load balancers → Distribute traffic&lt;/li&gt;
&lt;li&gt;Use microservices → Independent scaling&lt;/li&gt;
&lt;li&gt;Implement caching → Reduce DB load&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Result:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Handles millions of users&lt;/li&gt;
&lt;li&gt;High availability&lt;/li&gt;
&lt;li&gt;Low latency&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. Conclusion
&lt;/h2&gt;

&lt;p&gt;Designing a scalable system requires careful planning, the right architecture, and continuous monitoring. By following best practices like horizontal scaling, caching, and load balancing, you can build systems that grow efficiently with user demand.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Scalability ensures system growth without performance loss&lt;/li&gt;
&lt;li&gt;Horizontal scaling is preferred for large systems&lt;/li&gt;
&lt;li&gt;Use caching, load balancing, and microservices&lt;/li&gt;
&lt;li&gt;Monitor and optimize continuously&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Promotional Content
&lt;/h2&gt;

&lt;p&gt;If you want to master system design concepts like scalability, performance optimization, and real-time architecture, this is the perfect opportunity.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://ashokitech.com/core-java-online-training/" rel="noopener noreferrer"&gt;Top Core JAVA Online Training in 2026&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Java Full Stack Developer Roadmap
&lt;/h2&gt;

&lt;p&gt;Want to become a complete Java developer?&lt;/p&gt;

&lt;p&gt;👉 Follow this step-by-step roadmap:&lt;br&gt;
🔗 &lt;a href="https://www.ashokit.in/java-full-stack-developer-roadmap" rel="noopener noreferrer"&gt;https://www.ashokit.in/java-full-stack-developer-roadmap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This roadmap will guide you through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Core Java&lt;/li&gt;
&lt;li&gt;Advanced Java&lt;/li&gt;
&lt;li&gt;Spring Boot &amp;amp; Microservices&lt;/li&gt;
&lt;li&gt;Frontend Technologies&lt;/li&gt;
&lt;li&gt;Real-time Projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start your journey today and become a job-ready Java Full Stack Developer!&lt;/p&gt;

</description>
      <category>design</category>
      <category>scalable</category>
      <category>system</category>
    </item>
    <item>
      <title>What is status codes (200, 404, 500)?</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Fri, 27 Mar 2026 07:09:52 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/what-is-status-codes-200-404-500-3jd9</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/what-is-status-codes-200-404-500-3jd9</guid>
      <description>&lt;p&gt;When a client (like a browser or API tool) sends a request to a server, the server responds with a &lt;strong&gt;status code&lt;/strong&gt;. This code tells you:&lt;/p&gt;

&lt;p&gt;👉 &lt;em&gt;“What happened to your request?”&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is an HTTP Status Code?
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;HTTP status code&lt;/strong&gt; is a 3-digit number returned by the server to indicate the &lt;strong&gt;result of a request&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. 200 OK – Success ✅
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;200&lt;/strong&gt; means the request was &lt;strong&gt;successful&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  When you see 200:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data fetched successfully&lt;/li&gt;
&lt;li&gt;Request processed correctly&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;



&lt;p&gt;```http id="s1"&lt;br&gt;
GET /users/101 → 200 OK&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


👉 User data returned successfully

---

##  2. 404 Not Found – Resource Missing ❌

**404** means the requested resource was **not found on the server**.

###  When you see 404:

* Wrong URL
* Resource doesn’t exist
* Invalid ID

###  Example:



```http id="s2"
GET /users/999 → 404 Not Found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 User doesn’t exist&lt;/p&gt;




&lt;h2&gt;
  
  
  3. 500 Internal Server Error – Server Issue ⚠️
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;500&lt;/strong&gt; means something went &lt;strong&gt;wrong on the server side&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  When you see 500:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Code error (NullPointerException, etc.)&lt;/li&gt;
&lt;li&gt;Server crash&lt;/li&gt;
&lt;li&gt;Unexpected failure&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;



&lt;p&gt;```http id="s3"&lt;br&gt;
POST /users → 500 Internal Server Error&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


👉 Server failed to process request

---

##  Quick Comparison

| Status Code | Meaning      | Type            | Example Scenario          |
| ----------- | ------------ | --------------- | ------------------------- |
| 200         | Success      | ✅ Success       | Data fetched successfully |
| 404         | Not Found    | ❌ Client Error  | Invalid URL/resource      |
| 500         | Server Error | ⚠️ Server Error | Bug in backend            |

---

##  Status Code Categories

All HTTP status codes fall into 5 groups:

| Range | Category      | Meaning               |
| ----- | ------------- | --------------------- |
| 1xx   | Informational | Request received      |
| 2xx   | Success       | Request successful    |
| 3xx   | Redirection   | Further action needed |
| 4xx   | Client Errors | Problem with request  |
| 5xx   | Server Errors | Problem on server     |

---

##  Real-Time Example

Imagine using a website:

* Page loads → **200 OK** ✅
* Page not found → **404 Error** ❌
* Site crashes → **500 Error** ⚠️

---

##  Why Status Codes Matter

* Help debug issues quickly
* Improve API design
* Provide clear communication between client &amp;amp; server
* Essential for frontend-backend interaction

---

##  Conclusion

HTTP status codes are a critical part of web communication. Understanding codes like **200, 404, and 500** helps developers build and debug applications effectively.

---

##  Learn More

Want to master REST APIs, Spring Boot, and backend development?

👉 **[No 1 Core JAVA Online Training in 2026](https://ashokitech.com/core-java-online-training/)**


---

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>200</category>
      <category>statuscodes</category>
      <category>404</category>
      <category>500</category>
    </item>
    <item>
      <title>What is pom.xml?</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Thu, 26 Mar 2026 07:09:38 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/what-is-pomxml-45k1</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/what-is-pomxml-45k1</guid>
      <description>&lt;p&gt;When working with &lt;a href="https://ashokitech.com/core-java-online-training/" rel="noopener noreferrer"&gt;Java &lt;/a&gt;projects using &lt;strong&gt;Apache Maven&lt;/strong&gt;, one file plays a central role in managing everything—&lt;strong&gt;pom.xml&lt;/strong&gt;. It acts as the backbone of any Maven-based application.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is pom.xml?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;pom.xml (Project Object Model)&lt;/strong&gt; is an XML file used by Maven to define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project structure&lt;/li&gt;
&lt;li&gt;Dependencies&lt;/li&gt;
&lt;li&gt;Build configurations&lt;/li&gt;
&lt;li&gt;Plugins&lt;/li&gt;
&lt;li&gt;Project metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 In simple terms, it is the &lt;strong&gt;configuration file that tells Maven how to build your project&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is pom.xml Important?
&lt;/h2&gt;

&lt;p&gt;Without pom.xml, Maven cannot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download dependencies&lt;/li&gt;
&lt;li&gt;Build the project&lt;/li&gt;
&lt;li&gt;Run tests&lt;/li&gt;
&lt;li&gt;Package the application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 It acts as the &lt;strong&gt;instruction manual&lt;/strong&gt; for your project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Structure of pom.xml
&lt;/h2&gt;

&lt;p&gt;Here is a simple example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;xml id="d8l2kf"
&lt;span class="nt"&gt;&amp;lt;project&lt;/span&gt; &lt;span class="na"&gt;xmlns=&lt;/span&gt;&lt;span class="s"&gt;"http://maven.apache.org/POM/4.0.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;modelVersion&amp;gt;&lt;/span&gt;4.0.0&lt;span class="nt"&gt;&amp;lt;/modelVersion&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;com.example&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;my-app&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.0&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;dependencies&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.springframework&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;spring-core&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;5.3.0&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/dependencies&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Elements in pom.xml
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. groupId
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Represents the organization or company
👉 Example: &lt;code&gt;com.ashokit&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. artifactId
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Name of the project (JAR/WAR file)
👉 Example: &lt;code&gt;student-management&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. version
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Version of the project
👉 Example: &lt;code&gt;1.0.0&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. dependencies
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;List of external libraries required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Maven automatically downloads them from repositories.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. plugins
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Used to perform build tasks like compilation, testing, packaging&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dependency Management Example
&lt;/h2&gt;

&lt;p&gt;Instead of manually adding JAR files, just define them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;xml id="v0r8kp"
&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;mysql&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;mysql-connector-java&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;8.0.33&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Maven handles downloading and linking automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages of pom.xml
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📦 Centralized dependency management&lt;/li&gt;
&lt;li&gt;⚙️ Simplifies build process&lt;/li&gt;
&lt;li&gt;🧩 Reduces manual configuration&lt;/li&gt;
&lt;li&gt;🔄 Easy to maintain and update&lt;/li&gt;
&lt;li&gt;🚀 Improves project consistency&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Real-Time Use Case
&lt;/h2&gt;

&lt;p&gt;In enterprise projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple developers work on the same codebase&lt;/li&gt;
&lt;li&gt;pom.xml ensures everyone uses the same dependencies and versions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 This avoids conflicts and “it works on my machine” issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;pom.xml&lt;/strong&gt; is the heart of any Maven-based Java project. It defines how your project is built, what dependencies it uses, and how it behaves throughout its lifecycle. Understanding pom.xml is essential for any Java developer working with modern tools and frameworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Promotional Content
&lt;/h2&gt;

&lt;p&gt;Want to master Maven, pom.xml, and build real-time Java applications?&lt;/p&gt;

&lt;p&gt;👉 Enroll in the &lt;strong&gt;&lt;a href="https://ashokitech.com/core-java-online-training/" rel="noopener noreferrer"&gt;Best Core JAVA Online Training in 2026&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>apache</category>
      <category>maven</category>
      <category>artifactid</category>
    </item>
    <item>
      <title>Hi</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Wed, 25 Mar 2026 11:53:45 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/hi-18ip</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/hi-18ip</guid>
      <description>&lt;p&gt;Hi&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is HttpURLConnection?</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Wed, 25 Mar 2026 07:17:21 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/what-is-httpurlconnection-5fc9</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/what-is-httpurlconnection-5fc9</guid>
      <description>&lt;p&gt;&lt;strong&gt;HttpURLConnection&lt;/strong&gt; is a class in Java used to send HTTP requests and receive responses from web servers. It belongs to the &lt;code&gt;java.net&lt;/code&gt; package and is commonly used to interact with REST APIs and web services.&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Why Do We Use HttpURLConnection?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;To call REST APIs 🌐&lt;/li&gt;
&lt;li&gt;To send GET, POST, PUT, DELETE requests&lt;/li&gt;
&lt;li&gt;To fetch data from web servers&lt;/li&gt;
&lt;li&gt;To integrate external services (payment APIs, weather APIs, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📌 How HttpURLConnection Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create a URL&lt;/li&gt;
&lt;li&gt;Open connection&lt;/li&gt;
&lt;li&gt;Set request method (GET/POST)&lt;/li&gt;
&lt;li&gt;Send request&lt;/li&gt;
&lt;li&gt;Read response&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🔹 Example: HTTP GET Request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;java&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"h3k92l"&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.io.BufferedReader&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.io.InputStreamReader&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.net.HttpURLConnection&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.net.URL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HttpExample&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="kd"&gt;throws&lt;/span&gt; &lt;span class="nc"&gt;Exception&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="no"&gt;URL&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="no"&gt;URL&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://jsonplaceholder.typicode.com/posts/1"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="nc"&gt;HttpURLConnection&lt;/span&gt; &lt;span class="n"&gt;con&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;HttpURLConnection&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;openConnection&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="n"&gt;con&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setRequestMethod&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"GET"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;con&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getResponseCode&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Response Code: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="nc"&gt;BufferedReader&lt;/span&gt; &lt;span class="n"&gt;br&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;BufferedReader&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
                &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;InputStreamReader&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;con&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getInputStream&lt;/span&gt;&lt;span class="o"&gt;()));&lt;/span&gt;

        &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nc"&gt;StringBuilder&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;StringBuilder&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;br&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;readLine&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;append&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;br&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;close&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Response: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toString&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔹 Example: HTTP POST Request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;java&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"o9w2ks"&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.io.OutputStream&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.net.HttpURLConnection&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.net.URL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PostExample&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="kd"&gt;throws&lt;/span&gt; &lt;span class="nc"&gt;Exception&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="no"&gt;URL&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="no"&gt;URL&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://jsonplaceholder.typicode.com/posts"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="nc"&gt;HttpURLConnection&lt;/span&gt; &lt;span class="n"&gt;con&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;HttpURLConnection&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;openConnection&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="n"&gt;con&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setRequestMethod&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"POST"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;con&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDoOutput&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;jsonInput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"{\"title\":\"Java\",\"body\":\"Learning\",\"userId\":1}"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nc"&gt;OutputStream&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;con&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getOutputStream&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;jsonInput&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getBytes&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
        &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;flush&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;close&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;responseCode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;con&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getResponseCode&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"POST Response Code: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;responseCode&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🚀 Important Methods
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;setRequestMethod()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sets HTTP method (GET, POST, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;getResponseCode()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns HTTP status code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;getInputStream()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reads response data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;getOutputStream()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sends request data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;setDoOutput(true)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enables sending data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🔥 Advantages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Built-in &lt;a href="https://ashokitech.com/core-java-online-training/" rel="noopener noreferrer"&gt;Java &lt;/a&gt;API (no external libraries needed)&lt;/li&gt;
&lt;li&gt;Supports HTTP &amp;amp; HTTPS&lt;/li&gt;
&lt;li&gt;Useful for API integration&lt;/li&gt;
&lt;li&gt;Fine control over request/response&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚠️ Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Verbose and complex code&lt;/li&gt;
&lt;li&gt;Harder to manage compared to modern libraries&lt;/li&gt;
&lt;li&gt;No automatic JSON parsing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 In real-world projects, developers often use libraries like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apache HttpClient&lt;/li&gt;
&lt;li&gt;OkHttp&lt;/li&gt;
&lt;li&gt;Spring RestTemplate / WebClient&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 Real-Time Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Calling REST APIs&lt;/li&gt;
&lt;li&gt;Fetching weather/news data&lt;/li&gt;
&lt;li&gt;Payment gateway integration&lt;/li&gt;
&lt;li&gt;Microservices communication&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ✅ Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;HttpURLConnection&lt;/strong&gt; is a core Java class for handling HTTP communication. While it may seem a bit complex, it gives you full control over network requests and is widely used in backend systems.&lt;/p&gt;

&lt;p&gt;Learning this concept is crucial if you're preparing for real-time projects and interviews through &lt;strong&gt;&lt;a href="https://ashokitech.com/core-java-online-training/" rel="noopener noreferrer"&gt;Top Core JAVA Online Training in Hyderabad&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>httpurlconnection</category>
      <category>java</category>
    </item>
    <item>
      <title>Why Are Generics Used in Java?</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Tue, 24 Mar 2026 07:09:41 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/why-are-generics-used-in-java-e4f</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/why-are-generics-used-in-java-e4f</guid>
      <description>&lt;p&gt;Generics were introduced in Java (from Java 5) to make code &lt;strong&gt;safer, cleaner, and more reusable&lt;/strong&gt;. They allow you to define classes, interfaces, and methods with &lt;strong&gt;type parameters&lt;/strong&gt;, so you can work with different data types without sacrificing type safety.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 1. Type Safety (Main Reason)
&lt;/h2&gt;

&lt;p&gt;Before generics, Java collections stored objects as &lt;code&gt;Object&lt;/code&gt;, which could lead to runtime errors.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ Without Generics:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;List&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ArrayList&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="nc"&gt;Integer&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Runtime error (ClassCastException)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ✅ With Generics:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ArrayList&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;();&lt;/span&gt;
&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Safe&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Generics ensure &lt;strong&gt;errors are caught at compile time&lt;/strong&gt;, not runtime.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 2. Eliminates Explicit Type Casting
&lt;/h2&gt;

&lt;p&gt;Without generics, you must manually cast objects when retrieving them.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ Without Generics:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ✅ With Generics:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 This makes code &lt;strong&gt;cleaner and easier to read&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 3. Code Reusability
&lt;/h2&gt;

&lt;p&gt;Generics allow you to write &lt;strong&gt;one class or method&lt;/strong&gt; that works with multiple data types.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Box&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="no"&gt;T&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;T&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="no"&gt;T&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Same class works for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Box&amp;lt;Integer&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Box&amp;lt;String&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Box&amp;lt;Double&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 4. Compile-Time Checking
&lt;/h2&gt;

&lt;p&gt;Generics help the compiler verify correctness early.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ArrayList&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;();&lt;/span&gt;
&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// ❌ Compile-time error&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Prevents invalid data from entering collections.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 5. Better API Design
&lt;/h2&gt;

&lt;p&gt;Generics improve method and class design by making them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More &lt;strong&gt;flexible&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;More &lt;strong&gt;type-safe&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Easier to &lt;strong&gt;maintain&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example from &lt;a href="https://ashokitech.com/core-java-online-training/" rel="noopener noreferrer"&gt;Java &lt;/a&gt;Collections:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;E&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 6. Supports Advanced Features
&lt;/h2&gt;

&lt;p&gt;Generics enable powerful features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bounded types (&lt;code&gt;&amp;lt;T extends Number&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Wildcards (&lt;code&gt;?&lt;/code&gt;, &lt;code&gt;extends&lt;/code&gt;, &lt;code&gt;super&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Generic methods&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Real-Time Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;printArray&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;T&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;T&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Works with any type of array:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Integer[]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;String[]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Double[]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Summary
&lt;/h2&gt;

&lt;p&gt;Generics are used because they provide:&lt;/p&gt;

&lt;p&gt;✔ Type Safety&lt;br&gt;
✔ Code Reusability&lt;br&gt;
✔ No Explicit Casting&lt;br&gt;
✔ Compile-Time Error Detection&lt;br&gt;
✔ Cleaner and Maintainable Code&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Generics are a core part of modern Java development. Without them, working with collections and APIs would be error-prone and messy.&lt;/p&gt;

&lt;p&gt;If you want to master Core Java concepts like Generics with real-time examples and projects, check out:&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://ashokitech.com/core-java-online-training/" rel="noopener noreferrer"&gt;No 1 Core JAVA Online Training in Hyderabad&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>generics</category>
      <category>java</category>
    </item>
    <item>
      <title>What is Method Reference (::) in Java 8? A Complete Guide</title>
      <dc:creator>Gowtham Kalyan</dc:creator>
      <pubDate>Mon, 23 Mar 2026 06:35:51 +0000</pubDate>
      <link>https://dev.to/gowtham_kalyan_a0f7df04c1/what-is-method-reference-in-java-8-a-complete-guide-p03</link>
      <guid>https://dev.to/gowtham_kalyan_a0f7df04c1/what-is-method-reference-in-java-8-a-complete-guide-p03</guid>
      <description>&lt;p&gt;&lt;a href="https://ashokitech.com/core-java-online-training/" rel="noopener noreferrer"&gt;Java &lt;/a&gt;8 introduced several powerful features to make code more concise and functional. One of the most useful among them is the &lt;strong&gt;Method Reference (::)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you’re working with &lt;strong&gt;Lambda Expressions&lt;/strong&gt;, understanding method references will take your code to the next level.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 What is Method Reference?
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;Method Reference&lt;/strong&gt; is a shorthand syntax used to refer to a method &lt;strong&gt;without executing it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;👉 It is represented using the &lt;code&gt;::&lt;/code&gt; operator.&lt;/p&gt;

&lt;p&gt;Instead of writing a lambda expression, you can directly reference an existing method.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 Basic Syntax
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nl"&gt;ClassName:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;methodName&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Why Use Method Reference?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ Reduces code length&lt;/li&gt;
&lt;li&gt;✅ Improves readability&lt;/li&gt;
&lt;li&gt;✅ Reuses existing methods&lt;/li&gt;
&lt;li&gt;✅ Works seamlessly with functional interfaces&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Example: Lambda vs Method Reference
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Using Lambda:
&lt;/h3&gt;



&lt;p&gt;```java id="h5t1hp"&lt;br&gt;
list.forEach(x -&amp;gt; System.out.println(x));&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


### Using Method Reference:



```java id="5h0l1c"
list.forEach(System.out::println);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Cleaner and more readable!&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 Types of Method References
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ 1. Static Method Reference
&lt;/h3&gt;



&lt;p&gt;```java id="9o0bzz"&lt;br&gt;
class Demo {&lt;br&gt;
    static void display(String msg) {&lt;br&gt;
        System.out.println(msg);&lt;br&gt;
    }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;list.forEach(Demo::display);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


---

### ✅ 2. Instance Method Reference (of a Particular Object)



```java id="h2p5fw"
class Demo {
    void show(String msg) {
        System.out.println(msg);
    }
}

Demo d = new Demo();
list.forEach(d::show);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ✅ 3. Instance Method Reference (of Arbitrary Object)
&lt;/h3&gt;



&lt;p&gt;```java id="9re4hj"&lt;br&gt;
list.sort(String::compareToIgnoreCase);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


---

### ✅ 4. Constructor Reference



```java id="u6k0g6"
Supplier&amp;lt;List&amp;lt;String&amp;gt;&amp;gt; supplier = ArrayList::new;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 When to Use Method Reference?
&lt;/h2&gt;

&lt;p&gt;👉 Use method references when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You already have a method that matches a functional interface&lt;/li&gt;
&lt;li&gt;You want cleaner and shorter code&lt;/li&gt;
&lt;li&gt;You are working with Streams API&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Real-Time Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Iterating collections (&lt;code&gt;forEach&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Sorting data (&lt;code&gt;Comparator&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Stream operations (&lt;code&gt;map&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Object creation using constructors&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔥 Key Difference: Lambda vs Method Reference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Lambda Expression&lt;/th&gt;
&lt;th&gt;Method Reference&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Syntax&lt;/td&gt;
&lt;td&gt;Verbose&lt;/td&gt;
&lt;td&gt;Short &amp;amp; Clean&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reusability&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Readability&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🚀 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Method references are a powerful feature in Java 8 that help you write clean, readable, and efficient code. Once you start using them with Streams and functional interfaces, your coding style becomes more modern and professional.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Learn More – Upgrade Your Java Skills
&lt;/h2&gt;

&lt;p&gt;Join the &lt;strong&gt;&lt;a href="https://ashokitech.com/core-java-online-training/" rel="noopener noreferrer"&gt;Best Core JAVA Online Training in Hyderabad&lt;/a&gt;&lt;/strong&gt; and gain hands-on experience with real-time projects, expert guidance, and interview preparation.&lt;/p&gt;

</description>
      <category>java8</category>
      <category>method</category>
      <category>reference</category>
    </item>
  </channel>
</rss>
