EN
Java 8 - count unique String using Collectors.groupingBy
5 points
Quick solution:
xxxxxxxxxx
1
import java.util.ArrayList;
2
import java.util.List;
3
import java.util.Map;
4
import java.util.function.Function;
5
import java.util.stream.Collectors;
6
7
public class CountStrings {
8
9
public static void main(String[] args) {
10
11
List<String> usernames = new ArrayList<>();
12
usernames.add("Kate"); // Kate - 1st time
13
usernames.add("John");
14
usernames.add("Ann");
15
usernames.add("Kate"); // Kate - 2nd time
16
usernames.add("Kate"); // Kate - 3rd time
17
18
Map<String, Long> usersToCount = usernames.stream().collect(
19
Collectors.groupingBy(
20
Function.identity(), Collectors.counting()
21
)
22
);
23
24
usersToCount.forEach(
25
(user, count) -> System.out.println(user + ", " + count)
26
);
27
}
28
}
Output:
xxxxxxxxxx
1
Ann, 1
2
Kate, 3
3
John, 1