Counting Occurrences with groupBy
The groupBy method in Java streams allows us to collect elements into groups based on a specified key. In this case, we want to group strings by their value and count the occurrences within each group.
To achieve this, we can use the overload of groupBy that takes a second Collector. We will provide Collectors.counting() as this Collector, which will count the elements within each group.
Here's how to implement this using a stream:
import java.util.*; import java.util.stream.*; class Test { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Hello"); list.add("Hello"); list.add("World"); Map<String, Long> counted = list.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); System.out.println(counted); } }
This will produce the following output:
{Hello=2, World=1}
The map contains two entries, with "Hello" mapped to 2 and "World" mapped to 1. This represents the count of occurrences for each word in the input list.
Note that we can also use groupingByConcurrent for improved efficiency, especially in scenarios where concurrent execution is safe.
The above is the detailed content of How Can I Count String Occurrences in a List Using Java Streams?. For more information, please follow other related articles on the PHP Chinese website!