import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.Random;
import java.util.stream.Stream;
import java.util.stream.IntStream;
class Main {
public static void main(String[] args) {
// Data generation
Random rand = new Random();
List<String> productNames = List.of("Mouse", "Keyboard", "Battery", "Laptop", "Pad Mouse", "Ethernet Cable")
.stream()
.flatMap(product -> Stream.generate(() -> product).limit(rand.nextInt(20 - 1) + 1))
.toList();
Map<String, Integer> productsByCategories = new TreeMap<>();
// Categorization
for (String productName: productNames) {
if (productsByCategories.containsKey(productName)) {
var count = productsByCategories.get(productName) + 1;
productsByCategories.put(productName, count);
} else {
productsByCategories.put(productName, 1);
}
}
// Print output
System.out.println("Product names: " + productNames);
for (Map.Entry<String, Integer> productByCategory : productsByCategories.entrySet()) {
System.out.println("Product: " + productByCategory.getKey() + " - " + productByCategory.getValue());
}
}
}