Java Program to Find the Occurrence of Words in a String using HashMap

1. Introduction

Counting the occurrence of words in a text is a common task in programming, especially in fields like data analysis, natural language processing, and search engine optimization. This process involves analyzing a string of text, identifying individual words, and counting how many times each word appears. Java's HashMap is an ideal data structure for this task, as it allows for fast lookups and can map each unique word to its corresponding count. This blog post will demonstrate how to use a HashMap in Java to find and count the occurrence of each word in a given string.

2. Program Steps

1. Define a string containing the text to be analyzed.

2. Split the string into words based on spaces.

3. Create a HashMap to store each word and its count.

4. Iterate over the array of words, updating the count for each word in the HashMap.

5. Display the words and their counts.

3. Code Program

import java.util.HashMap;
import java.util.Map;

public class WordOccurrenceInString {
    public static void main(String[] args) {
        // Step 1: Defining the string to be analyzed
        String text = "this is a test this is only a test";

        // Step 2: Splitting the string into words
        String[] words = text.split(" ");

        // Step 3: Creating a HashMap to store word counts
        Map<String, Integer> wordCounts = new HashMap<>();

        // Step 4: Iterating over the words and counting occurrences
        for (String word : words) {
            if (wordCounts.containsKey(word)) {
                // If the word is already in the map, increment its count
                wordCounts.put(word, wordCounts.get(word) + 1);
            } else {
                // Otherwise, add the word to the map with count 1
                wordCounts.put(word, 1);
            }
        }

        // Step 5: Displaying the word counts
        System.out.println("Word occurrences:");
        for (Map.Entry<String, Integer> entry : wordCounts.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

Output:

Word occurrences:
this: 2
is: 2
a: 2
test: 2
only: 1

Explanation:

1. The program begins with a string text that contains the text to be analyzed. This string includes repeated words to demonstrate the counting process.

2. The split(" ") method is used to divide the string into an array of words, using spaces as delimiters.

3. A HashMap named wordCounts is then created. This HashMap will store each unique word as a key and the number of times it appears in the string as its value.

4. The program iterates over the array of words using a for-each loop. For each word, it checks if the word is already a key in the HashMap. If so, it increments the count for that word. If not, the word is added to the HashMap with an initial count of 1.

5. Finally, the program iterates over the entries in the HashMap and prints out each word and its count. The output demonstrates that the program successfully counts the occurrence of each word in the given string.

6. This example illustrates how to use a HashMap in Java to efficiently count the occurrences of words in a string, showcasing a fundamental technique for text analysis.

Comments