Find Occurrence Of Each Character From String

Hi All,

Today I have released new video on "Java Interview Coding Question | Find Occurrence Of Each Character From String in Java 8 Stream API"

This is frequently asked question in Java Interview.

Please watch full video, share, like and Subscribe youtube channel and press bell icon. So you will get latest video notification. 

 



 package org.practice.basicprgms;


import java.util.Collections;

import java.util.HashMap;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

import java.util.function.Function;

import java.util.stream.Collectors;


public class FindOccurencesOfEachCharacter {


public static void main(String[] args) {

String input = "session";

// Solution 1: Using GroupingBy and Counting()

Map<Character, Long> map =

input.chars()

.mapToObj(c -> (char) c)

.collect(Collectors.groupingBy(Function.identity(),

Collectors.counting()));

System.out.println("Using groupingBy : "+ map);


// Solution 2: Using groupingBy and LinkedHashMap(Maintain order of Characters)

map = input.chars()

.mapToObj(c -> (char) c)

.collect(Collectors.groupingBy(Function.identity(),

LinkedHashMap::new,

Collectors.counting()));

System.out.println("Using LinkedHashMap : "+ map);


// Solution 3: Using HashMap and ForEach

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

input.chars()

.mapToObj(c -> (char) c)

.forEach(c -> forEachMap.put(c, forEachMap.getOrDefault(c, 0) + 1));

System.out.println("using forEach : "+ forEachMap);


// Solution 4: Using Collections.Frequency() method

List<Character> charList = input.chars()

.mapToObj(c -> (char) c)

.collect(Collectors.toList());

Map<Character, Integer> freqMap =

charList.stream()

.distinct()

.collect(Collectors.toMap(c -> c,

c -> Collections.frequency(charList, c)

));

System.out.println("Using Frequency : " + freqMap);


// Solution 5: Using Merge() method

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

for(char c: input.toCharArray()) {

mergeMap.merge(c, 1, Integer::sum);

}

System.out.println("Using MergeMap : "+ mergeMap);


}


}


Output:

Using groupingBy : {s=3, e=1, i=1, n=1, o=1}

Using LinkedHashMap : {s=3, e=1, i=1, o=1, n=1}

using forEach : {s=3, e=1, i=1, n=1, o=1}

Using Frequency : {s=3, e=1, i=1, n=1, o=1}

Using MergeMap : {s=3, e=1, i=1, n=1, o=1}







Post a Comment

0 Comments