From 1d0e670597de57d8fd2cd318d8c644faa4536c23 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Wed, 16 Nov 2022 22:14:17 +0100 Subject: [PATCH] Reset size to `0` when clearing table --- .../java/ch/nuth/zhaw/exbox/MyHashtable.java | 259 +++++++++--------- 1 file changed, 130 insertions(+), 129 deletions(-) diff --git a/app/src/main/java/ch/nuth/zhaw/exbox/MyHashtable.java b/app/src/main/java/ch/nuth/zhaw/exbox/MyHashtable.java index 904fab8..c70cf13 100644 --- a/app/src/main/java/ch/nuth/zhaw/exbox/MyHashtable.java +++ b/app/src/main/java/ch/nuth/zhaw/exbox/MyHashtable.java @@ -1,129 +1,130 @@ -package ch.nuth.zhaw.exbox; - -import java.util.Collection; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("unchecked") -public class MyHashtable implements Map { - private int capacity; - private int size; - private K[] keys = (K[]) new Object[10]; - private V[] values = (V[]) new Object[10]; - - public MyHashtable(int size) { - capacity = size; - clear(); - } - - private boolean hashEquals(Object x, Object y) { - if (x == null || y == null) { - return x == y; - } else { - return x.hashCode() == y.hashCode(); - } - } - - private int hash(Object k) { - int h = Math.abs(k.hashCode()); - return h % keys.length; - } - - // Removes all mappings from this map (optional operation). - public void clear() { - keys = (K[]) new Object[capacity]; - values = (V[]) new Object[capacity]; - } - - // Associates the specified value with the specified key in this map (optional - // operation). - public V put(K key, V value) { - int hashCode = hash(key); - int index = hashCode; - - for (int i = 0; keys[index] != null && !hashEquals(keys[index], key); i++) { - index = hash(hashCode + (int) Math.pow(i, 2)); - } - - if (keys[index] == null) { - size++; - } - - keys[index] = key; - values[index] = value; - - return value; - } - - // Returns the value to which this map maps the specified key. - public V get(Object key) { - // to be done - for (int i = 0; i < keys.length; i++) { - if (hashEquals(key, keys[i])) { - return values[i]; - } - } - - return null; - } - - // Removes the mapping for this key from this map if present (optional - // operation). - public V remove(Object key) { - // to be done (Aufgabe 3) - throw new UnsupportedOperationException(); - } - - // Returns the number of key-value mappings in this map. - public int size() { - return size; - } - - // UnsupportedOperationException - // =================================================================== - // Returns a collection view of the values contained in this map. - public Collection values() { - throw new UnsupportedOperationException(); - } - - // Returns true if this map contains a mapping for the specified key. - public boolean containsKey(Object key) { - throw new UnsupportedOperationException(); - } - - // Returns true if this map maps one or more keys to the specified value. - public boolean containsValue(Object value) { - throw new UnsupportedOperationException(); - } - - // Returns a set view of the mappings contained in this map. - public Set> entrySet() { - throw new UnsupportedOperationException(); - } - - // Compares the specified object with this map for equality. - public boolean equals(Object o) { - throw new UnsupportedOperationException(); - } - - // Copies all of the mappings from the specified map to this map (optional - // operation). - public void putAll(Map t) { - throw new UnsupportedOperationException(); - } - - // Returns the hash code value for this map. - public int hashCode() { - throw new UnsupportedOperationException(); - } - - // Returns true if this map contains no key-value mappings. - public boolean isEmpty() { - throw new UnsupportedOperationException(); - } - - // Returns a set view of the keys contained in this map. - public Set keySet() { - throw new UnsupportedOperationException(); - } -} +package ch.nuth.zhaw.exbox; + +import java.util.Collection; +import java.util.Map; +import java.util.Set; + +@SuppressWarnings("unchecked") +public class MyHashtable implements Map { + private int capacity; + private int size; + private K[] keys = (K[]) new Object[10]; + private V[] values = (V[]) new Object[10]; + + public MyHashtable(int size) { + capacity = size; + clear(); + } + + private boolean hashEquals(Object x, Object y) { + if (x == null || y == null) { + return x == y; + } else { + return x.hashCode() == y.hashCode(); + } + } + + private int hash(Object k) { + int h = Math.abs(k.hashCode()); + return h % keys.length; + } + + // Removes all mappings from this map (optional operation). + public void clear() { + size = 0; + keys = (K[]) new Object[capacity]; + values = (V[]) new Object[capacity]; + } + + // Associates the specified value with the specified key in this map (optional + // operation). + public V put(K key, V value) { + int hashCode = hash(key); + int index = hashCode; + + for (int i = 0; keys[index] != null && !hashEquals(keys[index], key); i++) { + index = hash(hashCode + (int) Math.pow(i, 2)); + } + + if (keys[index] == null) { + size++; + } + + keys[index] = key; + values[index] = value; + + return value; + } + + // Returns the value to which this map maps the specified key. + public V get(Object key) { + // to be done + for (int i = 0; i < keys.length; i++) { + if (hashEquals(key, keys[i])) { + return values[i]; + } + } + + return null; + } + + // Removes the mapping for this key from this map if present (optional + // operation). + public V remove(Object key) { + // to be done (Aufgabe 3) + throw new UnsupportedOperationException(); + } + + // Returns the number of key-value mappings in this map. + public int size() { + return size; + } + + // UnsupportedOperationException + // =================================================================== + // Returns a collection view of the values contained in this map. + public Collection values() { + throw new UnsupportedOperationException(); + } + + // Returns true if this map contains a mapping for the specified key. + public boolean containsKey(Object key) { + throw new UnsupportedOperationException(); + } + + // Returns true if this map maps one or more keys to the specified value. + public boolean containsValue(Object value) { + throw new UnsupportedOperationException(); + } + + // Returns a set view of the mappings contained in this map. + public Set> entrySet() { + throw new UnsupportedOperationException(); + } + + // Compares the specified object with this map for equality. + public boolean equals(Object o) { + throw new UnsupportedOperationException(); + } + + // Copies all of the mappings from the specified map to this map (optional + // operation). + public void putAll(Map t) { + throw new UnsupportedOperationException(); + } + + // Returns the hash code value for this map. + public int hashCode() { + throw new UnsupportedOperationException(); + } + + // Returns true if this map contains no key-value mappings. + public boolean isEmpty() { + throw new UnsupportedOperationException(); + } + + // Returns a set view of the keys contained in this map. + public Set keySet() { + throw new UnsupportedOperationException(); + } +}