diff --git a/src/main/java/br/ufrgs/inf/prosoft/cache/tools/Reducer.java b/src/main/java/br/ufrgs/inf/prosoft/cache/tools/Reducer.java
index b6c1081..e6780e7 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/cache/tools/Reducer.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/cache/tools/Reducer.java
@@ -12,11 +12,10 @@ import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
-import java.util.List;
+import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
@@ -30,14 +29,18 @@ public class Reducer {
public static void reduce(String eventsPath, String reducePath, String prefix) {
try (Stream<String> lines = Files.lines(Paths.get(eventsPath))) {
Gson gson = new Gson();
- List<CacheEvent> hits = lines.map(line -> gson.fromJson(line, CacheEvent.class))
- .filter(event -> event.getType().equals(EventType.HIT) || event.getType().equals(EventType.ADDITION) || event.getType().equals(EventType.MISS))
- .collect(Collectors.toList());
-
- Map<String, Long> objectHasHits = hits.stream()
- .collect(Collectors.groupingBy(
- event -> event.getName() + "," + event.getIdentifier() + "," + event.getType().name().toLowerCase(),
- Collectors.counting()));
+ Map<String, Integer> objectHasHits = new HashMap<>();
+ lines.forEach(line -> {
+ CacheEvent event = gson.fromJson(line, CacheEvent.class);
+ if (event.getType().equals(EventType.HIT) || event.getType().equals(EventType.ADDITION) || event.getType().equals(EventType.MISS)) {
+ String identifier = event.getName() + "," + event.getIdentifier() + "," + event.getType().name().toLowerCase();
+ try {
+ objectHasHits.put(identifier, objectHasHits.get(identifier) + 1);
+ } catch (Exception ex) {
+ objectHasHits.put(identifier, 1);
+ }
+ }
+ });
try (FileWriter fileWriter = new FileWriter(reducePath, true)) {
objectHasHits.entrySet().stream().forEach(entry -> {