This is an automated email from the ASF dual-hosted git repository. bchapuis pushed a commit to branch 681-handle-the-out-of-memory-errors in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
commit ae9889c9fd7ea3e597ad56355c5b754cf00cc9f6 Author: Bertil Chapuis <[email protected]> AuthorDate: Wed Jul 12 15:31:41 2023 +0200 Improve documentation --- .../collection/Long2LongOpenHashDataMap.java | 35 ++----------- .../collection/Long2LongPackedOpenHashDataMap.java | 36 ++----------- .../collection/Long2ObjectOpenHashDataMap.java | 61 ++-------------------- 3 files changed, 13 insertions(+), 119 deletions(-) diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongOpenHashDataMap.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongOpenHashDataMap.java index 00e374be..cba05892 100644 --- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongOpenHashDataMap.java +++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongOpenHashDataMap.java @@ -25,6 +25,11 @@ import java.util.function.Consumer; import java.util.function.LongConsumer; import java.util.function.Supplier; +/** + * An open addressed hash map of long keys and long values derived from fastutil's + * {@link Long2LongOpenHashMap}. This implementation allows for the use of on-heap, off-heap, or + * memory mapped memory. + */ public class Long2LongOpenHashDataMap extends AbstractLong2LongMap implements DataMap<Long>, Hash { @@ -728,7 +733,6 @@ public class Long2LongOpenHashDataMap extends AbstractLong2LongMap return setValue((v).longValue()); } - @SuppressWarnings("unchecked") @Override public boolean equals(final Object o) { if (!(o instanceof Map.Entry)) { @@ -780,7 +784,6 @@ public class Long2LongOpenHashDataMap extends AbstractLong2LongMap */ LongArrayList wrapped; - @SuppressWarnings("unused") abstract void acceptOnIndex(final ConsumerType action, final long index); public boolean hasNext() { @@ -1547,32 +1550,4 @@ public class Long2LongOpenHashDataMap extends AbstractLong2LongMap this.key = newKey; this.value = newValue; } - - /** - * Returns a hash code for this map. - * <p> - * This method overrides the generic method provided by the superclass. Since {@code equals()} is - * not overriden, it is important that the value returned by this method is the same value as the - * one returned by the overriden method. - * - * @return a hash code for this map. - */ - @Override - public int hashCode() { - int h = 0; - for (long j = realSize(), i = 0, t = 0; j-- != 0;) { - while (((key.get(i)) == 0)) { - i++; - } - t = HashCommon.long2int(key.get(i)); - t ^= HashCommon.long2int(value.get(i)); - h += t; - i++; - } - // Zero / null keys have hash zero. - if (containsNullKey) { - h += HashCommon.long2int(value.get(n)); - } - return h; - } } diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongPackedOpenHashDataMap.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongPackedOpenHashDataMap.java index 7979e2c4..419234ae 100644 --- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongPackedOpenHashDataMap.java +++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2LongPackedOpenHashDataMap.java @@ -27,6 +27,11 @@ import java.util.function.LongConsumer; import java.util.function.Supplier; import org.apache.baremaps.database.type.PairDataType.Pair; +/** + * An open addressed hash map of long keys and long values derived from fastutil's + * {@link Long2LongOpenHashMap}. This implementation allows for the use of on-heap, off-heap, or + * memory mapped memory. The keys and values are packed in the same memory. + */ public class Long2LongPackedOpenHashDataMap extends AbstractLong2LongMap implements DataMap<Long>, Hash { @@ -717,7 +722,6 @@ public class Long2LongPackedOpenHashDataMap extends AbstractLong2LongMap return setValue(v); } - @SuppressWarnings("unchecked") @Override public boolean equals(final Object o) { if (!(o instanceof Map.Entry)) { @@ -772,7 +776,6 @@ public class Long2LongPackedOpenHashDataMap extends AbstractLong2LongMap */ LongArrayList wrapped; - @SuppressWarnings("unused") abstract void acceptOnIndex(final ConsumerType action, final long index); public boolean hasNext() { @@ -1549,33 +1552,4 @@ public class Long2LongPackedOpenHashDataMap extends AbstractLong2LongMap this.maxFill = maxFill(n, f); this.index = newIndex; } - - /** - * Returns a hash code for this map. - * <p> - * This method overrides the generic method provided by the superclass. Since {@code equals()} is - * not overriden, it is important that the value returned by this method is the same value as the - * one returned by the overriden method. - * - * @return a hash code for this map. - */ - @Override - public int hashCode() { - int h = 0; - for (long j = realSize(), i = 0, t = 0; j-- != 0;) { - Pair<Long, Long> pair; - while (((pair = index.get(i)).left() == 0)) { - i++; - } - t = HashCommon.long2int(pair.left()); - t ^= HashCommon.long2int(pair.right()); - h += t; - i++; - } - // Zero / null keys have hash zero. - if (containsNullKey) { - h += HashCommon.long2int(index.get(n).right()); - } - return h; - } } diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2ObjectOpenHashDataMap.java b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2ObjectOpenHashDataMap.java index 7922fcbd..a4fc0cd4 100644 --- a/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2ObjectOpenHashDataMap.java +++ b/baremaps-core/src/main/java/org/apache/baremaps/database/collection/Long2ObjectOpenHashDataMap.java @@ -30,28 +30,9 @@ import java.util.function.Consumer; import java.util.function.Supplier; /** - * A type-specific hash map with a fast, small-footprint implementation. - * - * <p> - * Instances of this class use a hash table to represent a map. The table is filled up to a - * specified <em>load factor</em>, and then doubled in size to accommodate new entries. If the table - * is emptied below <em>one fourth</em> of the load factor, it is halved in size; however, the table - * is never reduced to a size smaller than that at creation time: this approach makes it possible to - * create maps with a large capacity in which insertions and deletions do not cause immediately - * rehashing. Moreover, halving is not performed when deleting entries from an iterator, as it would - * interfere with the iteration process. - * - * <p> - * Note that {@link #clear()} does not modify the hash table size. Rather, a family of - * {@linkplain #trim() trimming methods} lets you control the size of the table; this is - * particularly useful if you reuse instances of this class. - * - * <p> - * Entries returned by the type-specific {@link #entrySet()} method implement the suitable - * type-specific {@link it.unimi.dsi.fastutil.Pair Pair} interface; only values are mutable. - * - * @see Hash - * @see HashCommon + * An open addressed hash map of long keys and long values derived from fastutil's + * {@link Long2ObjectOpenHashMap}. This implementation allows for the use of on-heap, off-heap, or + * memory mapped memory. */ public class Long2ObjectOpenHashDataMap<V> extends AbstractLong2ObjectMap<V> implements DataMap<V>, Hash { @@ -118,7 +99,6 @@ public class Long2ObjectOpenHashDataMap<V> extends AbstractLong2ObjectMap<V> * @param expected the expected number of elements in the hash map. * @param f the load factor. */ - @SuppressWarnings("unchecked") public Long2ObjectOpenHashDataMap( final long expected, final float f, @@ -675,7 +655,6 @@ public class Long2ObjectOpenHashDataMap<V> extends AbstractLong2ObjectMap<V> return Long.valueOf(key.get(index)); } - @SuppressWarnings("unchecked") @Override public boolean equals(final Object o) { if (!(o instanceof Map.Entry)) { @@ -728,7 +707,6 @@ public class Long2ObjectOpenHashDataMap<V> extends AbstractLong2ObjectMap<V> */ LongArrayList wrapped; - @SuppressWarnings("unused") abstract void acceptOnIndex(final ConsumerType action, final long index); public boolean hasNext() { @@ -1065,7 +1043,6 @@ public class Long2ObjectOpenHashDataMap<V> extends AbstractLong2ObjectMap<V> // @Override - @SuppressWarnings("unchecked") public boolean contains(final Object o) { if (!(o instanceof Map.Entry)) { return false; @@ -1101,7 +1078,6 @@ public class Long2ObjectOpenHashDataMap<V> extends AbstractLong2ObjectMap<V> } @Override - @SuppressWarnings("unchecked") public boolean remove(final Object o) { if (!(o instanceof Map.Entry)) { return false; @@ -1469,7 +1445,6 @@ public class Long2ObjectOpenHashDataMap<V> extends AbstractLong2ObjectMap<V> * * @param newN the new size */ - @SuppressWarnings("unchecked") protected void rehash(final long newN) { final long mask = newN - 1; // Note that this is used by the hashing macro final DataMap<Long> newKey = keySupplier.get(); @@ -1490,34 +1465,4 @@ public class Long2ObjectOpenHashDataMap<V> extends AbstractLong2ObjectMap<V> this.key = newKey; this.value = newValue; } - - /** - * Returns a hash code for this map. - * <p> - * This method overrides the generic method provided by the superclass. Since {@code equals()} is - * not overriden, it is important that the value returned by this method is the same value as the - * one returned by the overriden method. - * - * @return a hash code for this map. - */ - @Override - public int hashCode() { - int h = 0; - for (long j = realSize(), i = 0, t = 0; j-- != 0;) { - while (((key.get(i)) == 0)) { - i++; - } - t = HashCommon.long2int(key.get(i)); - if (this != value.get(i)) { - t ^= ((value.get(i)) == null ? 0 : (value.get(i)).hashCode()); - } - h += t; - i++; - } - // Zero / null keys have hash zero. - if (containsNullKey) { - h += ((value.get(n)) == null ? 0 : (value.get(n)).hashCode()); - } - return h; - } }
