diff --git a/src/main/java/core/basesyntax/impl/StorageImpl.java b/src/main/java/core/basesyntax/impl/StorageImpl.java index 455a7b080..3b1740b1f 100644 --- a/src/main/java/core/basesyntax/impl/StorageImpl.java +++ b/src/main/java/core/basesyntax/impl/StorageImpl.java @@ -3,17 +3,47 @@ import core.basesyntax.Storage; public class StorageImpl implements Storage { + private static final int MAX_SIZE = 10; + private Object[] keys; + private Object[] values; + private int size; + + public StorageImpl() { + keys = new Object[MAX_SIZE]; + values = new Object[MAX_SIZE]; + size = 0; + } + @Override public void put(K key, V value) { + for (int i = 0; i < size; i++) { + if (keysEqual(keys[i], key)) { + values[i] = value; + return; + } + } + keys[size] = key; + values[size] = value; + size++; } @Override public V get(K key) { + for (int i = 0; i < size; i++) { + if (keysEqual(key, keys[i])) { + return (V) values[i]; + } + } return null; } @Override public int size() { - return -1; + return size; + } + + private boolean keysEqual(Object keyInStorage, Object keyToFind) { + return keyInStorage == keyToFind + || (keyInStorage != null && keyInStorage.equals(keyToFind)); } }