$show=/label

Java 8 - Find Most Repeated Character In String

SHARE:

A quick guide to find the most appeared character from string in java 8.

1. Overview

In this tutorial, We'll learn how to find the character most appeared in the string in java.


Finding most frequently occurring character from string can be solved in many ways. But, we will present the most used and efficient solutions.

At the end, how to solve this problem using java 8 stream api methods.

Java 8 - Find Most Repeated Character In String


2. Java - Find Most Repeated Character In String Using HashMap


First, Let us solve this problem using collection api HashMap class.

In this approach, Create the HashMap instance using new keyword.

Convert the string to char array using to toCharArray(). Then iterate the char array over the for loop. Take each character and add it to the HashMap with the value as current number of instances. 
If the character is already present in the HashMap then increment the existing value by 1 and update the the HashMap.

Like this, perform the steps till last character of the string. By end, hash map contains the character which is most repeated.

Next, get the max of values of HashMap using Collections.max() method.

Now, get the character from HashMap which value is matching to the max value from above step.

Look at the below code.
package com.javaprogramto.programs.strings.find.most;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.lang3.tuple.Pair;

public class FindMostRepeatedCharacterInStringExample {

	public static void main(String[] args) {

		String input = "hello world";

		Pair<Character, Integer> maxCharCountPair = getMostRepeatedCharacterFromString(input);

		System.out.println("Input string : " + input);
		System.out.println(maxCharCountPair.getKey() + " is the most repeated character for "
				+ maxCharCountPair.getValue() + " times.");

	}

	private static Pair<Character, Integer> getMostRepeatedCharacterFromString(String input) {

		Map<Character, Integer> countMap = new HashMap<>();

		char[] chars = input.toCharArray();

		// storing the char and its count in the hashmap
		for (char ch : chars) {

			if (!Character.isWhitespace(ch)) {

				Integer currentCount = countMap.get(ch);

				if (currentCount == null) {
					countMap.put(ch, 1);
				} else {
					countMap.put(ch, ++currentCount);
				}

			}
		}

		// getting the max count from counter map.
		Integer maxCharacterCount = Collections.max(countMap.values());

		char maxCharacter = Character.MIN_VALUE;

		// getting the max occurred character.
		for (Entry<Character, Integer> entry : countMap.entrySet()) {
			if (entry.getValue() == maxCharacterCount) {
				maxCharacter = entry.getKey();
			}
		}

		return Pair.of(maxCharacter, maxCharacterCount);
	}

}

Output:
Input string : hello world
l is the most repeated character for 3 times.

The above program compiles and run without any errors.  But this is lengthy program using HashMap.

Here, we have captured the most repeated character and its count in Pair object. Most repeated char and its value is retrieved from getKey() and getValue() from Pair instance.


3. Java - Find Most Repeated Character In String Using ASCII sized Array


You might have observed that there are many loops and getting the max from HashMap and its traversals. Because of many operations, the execution may take longer for the larger inputs.

Now, we'll see another efficient approach using ASCII codes.

First, we will initialize the new empty int array with size of 256 which is the no of ASCII codes.
The same concept is used in solving the problem to find the first non repeated character from string.

look at the below program.
package com.javaprogramto.programs.strings.find.most;

import org.apache.commons.lang3.tuple.Pair;

public class FindMostRepeatedCharacterInStringExample2 {

	public static void main(String[] args) {

		String input = "hello world";

		Pair<Character, Integer> maxCharCountPair = getMostRepeatedCharacterFromString(input);

		System.out.println("Input string : " + input);
		System.out.println(maxCharCountPair.getKey() + " is the most repeated character for "
				+ maxCharCountPair.getValue() + " times.");

	}

	private static Pair<Character, Integer> getMostRepeatedCharacterFromString(String input) {

		int[] asciiIntArray = new int[256];

		char[] chars = input.toCharArray();

		int mostAppearanceCount = 0;
		char mostAppearedChar = Character.MIN_VALUE;

		// storing the char and its count in the hashmap
		for (char ch : chars) {

			if (!Character.isWhitespace(ch)) {

				int asciiCode = (int) ch;

				asciiIntArray[asciiCode]++;

				if (asciiIntArray[asciiCode] > mostAppearanceCount) {
					mostAppearanceCount = asciiIntArray[asciiCode];
					mostAppearedChar = ch;

				}

			}
		}

		return Pair.of(mostAppearedChar, mostAppearanceCount);
	}

}

This program also produces the same output and this is an optimized logic. Works extremely well for large sized inputs.


4. Java 8 Solution To Find Most Repeated Character In String


The last solution, we will learn using java 8 functional style programming.

Using java 8, this problem can be solved in the single line but for the understanding purpose, we are putting into multiple lines.

Look at the below java 8 sample code.
package com.javaprogramto.programs.strings.find.most;

import java.util.Map;
import java.util.stream.Collectors;

import org.apache.commons.lang3.tuple.Pair;

public class FindMostRepeatedCharacterInStringExample3 {

	public static void main(String[] args) {

		String input = "hello world";

		Pair<Character, Long> maxCharCountPair = getMostRepeatedCharacterFromString(input);

		System.out.println("Input string : " + input);
		System.out.println(maxCharCountPair.getKey() + " is the most repeated character for "
				+ maxCharCountPair.getValue() + " times.");

	}

	private static Pair<Character, Long> getMostRepeatedCharacterFromString(String input) {
		
		return input.chars()
				.filter(c -> Character.isWhitespace(c) == false) // ignoring space
				.mapToObj(c -> (char) c)
				.collect(Collectors.groupingBy(c -> c, Collectors.counting()))
				.entrySet()
				.stream()
				.max(Map.Entry.comparingByValue())
				.map(p -> Pair.of(p.getKey(), p.getValue()))
				.orElse(Pair.of(Character.MIN_VALUE, -1L));
	}

}


This program also generates the same output.

5. Conclusion


In this article, we've seen how to find the most appeared character from string in java in different ways.



COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,21,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,32,Collector,1,Command Line,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,135,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,7,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,127,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,113,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,29,String,61,String Programs,28,String Revese,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,24,Unix,3,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Java 8 - Find Most Repeated Character In String
Java 8 - Find Most Repeated Character In String
A quick guide to find the most appeared character from string in java 8.
https://1.bp.blogspot.com/-tv_jKAGdIrg/YYvXyX6r99I/AAAAAAAADcA/qO3paH1XPEo_ImVIl5jARZzEY_mPilt2wCLcBGAsYHQ/w400-h299/Java%2B8%2B-%2BFind%2BMost%2BRepeated%2BCharacter%2BIn%2BString.png
https://1.bp.blogspot.com/-tv_jKAGdIrg/YYvXyX6r99I/AAAAAAAADcA/qO3paH1XPEo_ImVIl5jARZzEY_mPilt2wCLcBGAsYHQ/s72-w400-c-h299/Java%2B8%2B-%2BFind%2BMost%2BRepeated%2BCharacter%2BIn%2BString.png
JavaProgramTo.com
https://www.javaprogramto.com/2021/11/java-stromg-find-most-repeated-character.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2021/11/java-stromg-find-most-repeated-character.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content