package org.springframework.data.simpledb.util;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public final class MapUtils {
private MapUtils() {
// utility class
}
/**
* Splits rawMap's entries into a number of chunk maps of max chunkSize elements
*
* @param rawMap
* @param chunkSize
* @return
*/
public static List<Map<String, List<String>>> splitToChunksOfSize(Map<String, List<String>> rawMap, int chunkSize) {
List<Map<String, List<String>>> mapChunks = new LinkedList<Map<String, List<String>>>();
Set<Map.Entry<String, List<String>>> rawEntries = rawMap.entrySet();
Map<String, List<String>> currentChunk = new LinkedHashMap<String, List<String>>();
int rawEntryIndex = 0;
for(Map.Entry<String, List<String>> rawEntry : rawEntries) {
if(rawEntryIndex % chunkSize == 0) {
if(currentChunk.size() > 0) {
mapChunks.add(currentChunk);
}
currentChunk = new LinkedHashMap<String, List<String>>();
}
currentChunk.put(rawEntry.getKey(), rawEntry.getValue());
rawEntryIndex++;
if(rawEntryIndex == rawMap.size()) {
// finished iterating
mapChunks.add(currentChunk);
}
}
return mapChunks;
}
}