From a2f04aedbea1aea896ecc1703852c853cfe12091 Mon Sep 17 00:00:00 2001 From: Mukuta Pyataev Date: Sat, 18 Jan 2025 16:13:35 +0200 Subject: [PATCH 1/2] Implemented the Storage of the key-value --- .../core/basesyntax/impl/StorageImpl.java | 55 ++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/src/main/java/core/basesyntax/impl/StorageImpl.java b/src/main/java/core/basesyntax/impl/StorageImpl.java index 455a7b080..f3b158c58 100644 --- a/src/main/java/core/basesyntax/impl/StorageImpl.java +++ b/src/main/java/core/basesyntax/impl/StorageImpl.java @@ -3,17 +3,70 @@ import core.basesyntax.Storage; public class StorageImpl implements Storage { + private static final int MAX_SIZE = 10; + private final K[] keys; + private final V[] values; + private int size; + + public StorageImpl() { + //noinspection unchecked + keys = (K[]) new Object [MAX_SIZE]; + //noinspection unchecked + values = (V[]) new Object [MAX_SIZE]; + size = 0; + } + @Override public void put(K key, V value) { + + if (key == null) { + for (int i = 0; i < size; i++) { + K targetKey = keys[i]; + if (targetKey == null) { + values[i] = value; + return; + } + } + keys[size] = null; + values[size] = value; + size++; + } else { + for (int i = 0; i < size; i++) { + K targetKey = keys[i]; + if (targetKey != null && targetKey.equals(key)) { + values[i] = value; + return; + } + } + if (size < MAX_SIZE) { + keys[size] = key; + values[size] = value; + size++; + } + } } @Override public V get(K key) { + if (key == null) { + for (int i = 0; i < size; i++) { + if (keys[i] == null) { + return values[i]; + } + } + } else { + for (int i = 0; i < size; i++) { + K targetKey = keys[i]; + if (targetKey != null && targetKey.equals(key)) { + return values[i]; + } + } + } return null; } @Override public int size() { - return -1; + return size; } } From 4d965d1c34908072204520751bea9102d7710611 Mon Sep 17 00:00:00 2001 From: Mukuta Pyataev Date: Thu, 23 Jan 2025 18:01:28 +0200 Subject: [PATCH 2/2] fixed --- .../core/basesyntax/impl/StorageImpl.java | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/main/java/core/basesyntax/impl/StorageImpl.java b/src/main/java/core/basesyntax/impl/StorageImpl.java index f3b158c58..cef9951d5 100644 --- a/src/main/java/core/basesyntax/impl/StorageImpl.java +++ b/src/main/java/core/basesyntax/impl/StorageImpl.java @@ -18,32 +18,29 @@ public StorageImpl() { @Override public void put(K key, V value) { + if (size >= MAX_SIZE) { + throw new RuntimeException("Storage is full, cannot add more elements."); + } if (key == null) { for (int i = 0; i < size; i++) { - K targetKey = keys[i]; - if (targetKey == null) { + if (keys[i] == null) { values[i] = value; return; } } keys[size] = null; - values[size] = value; - size++; } else { for (int i = 0; i < size; i++) { - K targetKey = keys[i]; - if (targetKey != null && targetKey.equals(key)) { + if (keys[i] != null && keys[i].equals(key)) { values[i] = value; return; } } - if (size < MAX_SIZE) { - keys[size] = key; - values[size] = value; - size++; - } + keys[size] = key; } + values[size] = value; + size++; } @Override @@ -56,8 +53,7 @@ public V get(K key) { } } else { for (int i = 0; i < size; i++) { - K targetKey = keys[i]; - if (targetKey != null && targetKey.equals(key)) { + if (keys[i] != null && keys[i].equals(key)) { return values[i]; } }