1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5. public class StringDatasetMerger {
  6. /**
  7. * Merges multiple datasets of strings into a single dataset, counting occurrences.
  8. * @param datasets A list of datasets, where each dataset is a list of strings.
  9. * @return A map where keys are strings and values are their total counts.
  10. */
  11. public static Map<String, Integer> mergeDatasets(List<List<String>> datasets) {
  12. Map<String, Integer> mergedDataset = new HashMap<>(); // Initialize an empty map to store the merged data
  13. if (datasets == null || datasets.isEmpty()) {
  14. return mergedDataset; // Return empty map if input is null or empty
  15. }
  16. for (List<String> dataset : datasets) { // Iterate through each dataset in the input list
  17. if (dataset != null) {
  18. for (String str : dataset) { // Iterate through each string in the current dataset
  19. if (str != null) { //Handle null strings
  20. mergedDataset.put(str, mergedDataset.getOrDefault(str, 0) + 1); // Increment count for the string
  21. }
  22. }
  23. }
  24. }
  25. return mergedDataset; // Return the merged dataset
  26. }
  27. public static void main(String[] args) {
  28. // Example Usage
  29. List<List<String>> datasets = new ArrayList<>();
  30. List<String> dataset1 = List.of("apple", "banana", "apple");
  31. List<String> dataset2 = List.of("banana", "orange", "apple");
  32. List<String> dataset3 = List.of("grape", "apple");
  33. datasets.add(dataset1);
  34. datasets.add(dataset2);
  35. datasets.add(dataset3);
  36. Map<String, Integer> mergedData = mergeDatasets(datasets);
  37. System.out.println(mergedData); // Output the merged data
  38. }
  39. }

Add your comment