cache

Details

diff --git a/src/main/java/br/ufrgs/inf/prosoft/cache/MultiCache.java b/src/main/java/br/ufrgs/inf/prosoft/cache/MultiCache.java
index 702a450..4d9ac55 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/cache/MultiCache.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/cache/MultiCache.java
@@ -14,6 +14,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
+import java.util.function.BiConsumer;
 import java.util.stream.Collectors;
 
 /**
@@ -118,6 +119,12 @@ public class MultiCache<K, V> implements Cache<K, V> {
         return entrySet;
     }
 
+    public void forEach(BiConsumer<K, V> consumer) {
+        entrySet().forEach(entry -> {
+            consumer.accept(entry.getKey(), entry.getValue());
+        });
+    }
+
     public List<V> values() {
         List<V> values = this.map.entrySet().stream()
                 .filter(entry -> isValid(entry.getKey()))
@@ -131,7 +138,15 @@ public class MultiCache<K, V> implements Cache<K, V> {
         return values;
     }
 
-    private boolean containsKey(K key) {
+    public int size() {
+        return values().size();
+    }
+
+    public boolean isEmpty() {
+        return values().isEmpty();
+    }
+
+    public boolean containsKey(K key) {
         return this.map.containsKey(key) && isValid(key);
     }