import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class StringDatasetMerger {
/**
* Merges multiple datasets of strings into a single dataset, counting occurrences.
* @param datasets A list of datasets, where each dataset is a list of strings.
* @return A map where keys are strings and values are their total counts.
*/
public static Map<String, Integer> mergeDatasets(List<List<String>> datasets) {
Map<String, Integer> mergedDataset = new HashMap<>(); // Initialize an empty map to store the merged data
if (datasets == null || datasets.isEmpty()) {
return mergedDataset; // Return empty map if input is null or empty
}
for (List<String> dataset : datasets) { // Iterate through each dataset in the input list
if (dataset != null) {
for (String str : dataset) { // Iterate through each string in the current dataset
if (str != null) { //Handle null strings
mergedDataset.put(str, mergedDataset.getOrDefault(str, 0) + 1); // Increment count for the string
}
}
}
}
return mergedDataset; // Return the merged dataset
}
public static void main(String[] args) {
// Example Usage
List<List<String>> datasets = new ArrayList<>();
List<String> dataset1 = List.of("apple", "banana", "apple");
List<String> dataset2 = List.of("banana", "orange", "apple");
List<String> dataset3 = List.of("grape", "apple");
datasets.add(dataset1);
datasets.add(dataset2);
datasets.add(dataset3);
Map<String, Integer> mergedData = mergeDatasets(datasets);
System.out.println(mergedData); // Output the merged data
}
}
Add your comment