-
Notifications
You must be signed in to change notification settings - Fork 0
/
CountDuplicateCharacters.java
31 lines (25 loc) · 1.02 KB
/
CountDuplicateCharacters.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package devjava;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class CountDuplicateCharacters {
public static Map<Character, Integer> countDuplicateCharacters(String str) {
Map<Character, Integer> result = new HashMap<>();
for (char ch : str.toCharArray()) {
result.compute(ch, (k, v) -> (v == null) ? 1 : ++v);
}
return result;
}
public static Map<Character, Long> countDuplicateCharactersByStream(String str) {
Map<Character, Long> result = str.chars().mapToObj(c -> (char) c)
.collect(Collectors.groupingBy(c -> c, Collectors.counting()));
return result;
}
public static void main(String[] args) {
Map<Character, Integer> firstMap = countDuplicateCharacters("Hasan");
Map<Character, Long> secondMap = countDuplicateCharactersByStream("Hasan");
firstMap.entrySet().forEach(entry -> System.out.println(entry.getKey() + " " + entry.getValue()));
// secondMap.entrySet().forEach(entry -> System.out.println(entry.getKey() + " "
// + entry.getValue()));
}
}