public void addKeyVal(K k, V v) { int hashcode = Math.abs(k.hashCode()); int partitionID = hashcode % numPartitions; KeyValPartition<K, V, C> partition = partitions.get(partitionID); if (partition == null) { partition = new KeyValPartition<K, V, C>(partitionID, 5, kClass, vClass, cClass); partitions.put(partitionID, partition); } partition.addKeyVal(k, v); }
/** * Check if combining happens. * * @param partition * @return Check if combining happens. */ public boolean addKeyValPartition(KeyValPartition<K, V, C> partition) { int partitionID = partition.getPartitionID(); KeyValPartition<K, V, C> currentPartition = this.partitions.get(partitionID); if (currentPartition != null) { currentPartition.addKeyVals(partition.getKeyValMap()); return true; } else if (partitionID >= 0 && partitionID < numPartitions) { this.partitions.put(partitionID, partition); return false; } else { for (Entry<K, V> entry : partition.getKeyValMap().entrySet()) { addKeyVal(entry.getKey(), entry.getValue()); } return true; } }