chunkMap<K, V> method

List<Map<K, V>> chunkMap<K, V>(
  1. Map<K, V> data
)

Chunks a large map into smaller parts

Implementation

List<Map<K, V>> chunkMap<K, V>(Map<K, V> data) {
  final chunks = <Map<K, V>>[];

  // Convert the map to entries
  final entries = data.entries.toList();

  // Calculate the chunk size in items
  // Assume each item is roughly 100 bytes
  final itemsPerChunk = (chunkSize / 100).ceil();

  // Calculate the number of chunks
  final numChunks = (entries.length / itemsPerChunk).ceil();

  // Split the data into chunks
  for (int i = 0; i < numChunks; i++) {
    final start = i * itemsPerChunk;
    final end = (i + 1) * itemsPerChunk;
    final chunk = entries.sublist(
      start,
      end > entries.length ? entries.length : end,
    );
    final chunkMap = Map<K, V>.fromEntries(chunk);
    chunks.add(chunkMap);
  }

  logger?.info(
    'Chunked map of ${data.length} entries into ${chunks.length} chunks',
  );
  return chunks;
}