This section provides code and benchmarks for ten unique example implementations which iterate over the entries of a Map<Integer, Integer> and generate the sum of the Integer values. All of the examples have an algorithmic complexity of Θ(n), however, the benchmarks are still useful for providing insight on which implementations are more efficient in a “real world” environment.
Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Integer, Integer> pair = it.next();
sum += pair.getKey() + pair.getValue();
}
for (Map.Entry<Integer, Integer> pair : map.entrySet()) {
sum += pair.getKey() + pair.getValue();
}
Map.forEach (Java 8+)map.forEach((k, v) -> sum[0] += k + v);
Map.keySet with forfor (Integer key : map.keySet()) {
sum += key + map.get(key);
}
Map.keySet with IteratorIterator<Integer> it = map.keySet().iterator();
while (it.hasNext()) {
Integer key = it.next();
sum += key + map.get(key);
}
for (Iterator<Map.Entry<Integer, Integer>> entries =
map.entrySet().iterator(); entries.hasNext(); ) {
Map.Entry<Integer, Integer> entry = entries.next();
sum += entry.getKey() + entry.getValue();
}
Stream.forEach (Java 8+)map.entrySet().stream().forEach(e -> sum += e.getKey() + e.getValue());
Stream.forEach with Stream.parallel (Java 8+)map.entrySet()
.stream()
.parallel()
.forEach(e -> sum += e.getKey() + e.getValue());
IterableMap from Apache CollectionsMapIterator<Integer, Integer> mit = iterableMap.mapIterator();
while (mit.hasNext()) {
sum += mit.next() + it.getValue();
}
MutableMap from Eclipse Collections