You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@baremaps.apache.org by bc...@apache.org on 2023/07/12 13:34:07 UTC

[incubator-baremaps] 01/01: Improve documentation

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 5492e0c06c8415bc55ad259d487a15a9a33e093c
Author: Bertil Chapuis <bc...@gmail.com>
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;
-  }
 }