code: private Map<Integer, Map<K, V>> classifyBatch(Map<K, V> batch) {
          Map<Integer, Map<K, V>> classifiedBatch = new HashMap<Integer, Map<K, V>>();
          for (Entry<K, V> entry : batch.entrySet()) {
              int keyRange = hash(entry.getKey());
              Map<K, V> subBatch = classifiedBatch.get(keyRange);
              if (subBatch == null) {
                  subBatch = new HashMap<K, V>();
                  classifiedBatch.put(keyRange, subBatch);
              }
              subBatch.put(entry.getKey(), entry.getValue());
          }
          return classifiedBatch;
      }
docs: classify batch into several sub-batches for each key range
  
  @param batch covers several key range
  @return sub-batches which map to different key range