com.carrotsearch.hppc.ObjectObjectIdentityHashMap Maven / Gradle / Ivy
package com.carrotsearch.hppc;
/* */
import java.util.Iterator;
import com.carrotsearch.hppc.cursors.*;
/* */
import static com.carrotsearch.hppc.Containers.*;
import static com.carrotsearch.hppc.HashContainers.*;
/**
* An identity hash map of Object
to Object
.
*/
@SuppressWarnings("all")
@com.carrotsearch.hppc.Generated(
date = "2018-05-21T12:24:06+0200",
value = "KTypeVTypeIdentityHashMap.java")
public class ObjectObjectIdentityHashMap
extends ObjectObjectHashMap
{
/**
* New instance with sane defaults.
*/
public ObjectObjectIdentityHashMap() {
this(DEFAULT_EXPECTED_ELEMENTS);
}
/**
* New instance with sane defaults.
* @param expectedElements
* The expected number of elements guaranteed not to cause buffer
* expansion (inclusive).
*/
public ObjectObjectIdentityHashMap(int expectedElements) {
this(expectedElements, DEFAULT_LOAD_FACTOR);
}
/**
* New instance with sane defaults.
*
* @param expectedElements
* The expected number of elements guaranteed not to cause buffer
* expansion (inclusive).
* @param loadFactor
* The load factor for internal buffers. Insane load factors (zero, full capacity)
* are rejected by {@link #verifyLoadFactor(double)}.
*/
public ObjectObjectIdentityHashMap(int expectedElements, double loadFactor) {
this(expectedElements, loadFactor, HashOrderMixing.randomized());
}
/**
* New instance with the provided defaults.
*
* @param expectedElements
* The expected number of elements guaranteed not to cause a rehash (inclusive).
* @param loadFactor
* The load factor for internal buffers. Insane load factors (zero, full capacity)
* are rejected by {@link #verifyLoadFactor(double)}.
* @param orderMixer
* Hash key order mixing strategy. See {@link HashOrderMixing} for predefined
* implementations. Use constant mixers only if you understand the potential
* consequences.
*/
public ObjectObjectIdentityHashMap(int expectedElements, double loadFactor, HashOrderMixingStrategy orderMixer) {
this.orderMixer = orderMixer;
this.loadFactor = verifyLoadFactor(loadFactor);
ensureCapacity(expectedElements);
}
/**
* Create a hash map from all key-value pairs of another container.
*/
public ObjectObjectIdentityHashMap(ObjectObjectAssociativeContainer extends KType, ? extends VType> container) {
this(container.size());
putAll(container);
}
@Override
public int hashKey(KType key) {
assert !((key) == null); // Handled as a special case (empty slot marker).
return BitMixer.mix(System.identityHashCode(key), this.keyMixer);
}
@Override
public boolean equals(Object v1, Object v2) {
return v1 == v2;
}
/* */
@Override
protected boolean equalElements(ObjectObjectHashMap, ?> other) {
if (other.size() != size()) {
return false;
}
Iterator extends ObjectObjectCursor, ?>> i = other.iterator();
while (i.hasNext()) {
ObjectObjectCursor, ?> c = i.next();
KType key = (KType) c.key;
if (!containsKey(key) ||
!equals(get(key), c.value)) { // Compare values using the same function as keys.
return false;
}
}
return true;
}
/* */
/**
* Creates a hash map from two index-aligned arrays of key-value pairs.
*/
public static ObjectObjectIdentityHashMap from(KType[] keys, VType[] values) {
if (keys.length != values.length) {
throw new IllegalArgumentException("Arrays of keys and values must have an identical length.");
}
ObjectObjectIdentityHashMap map = new ObjectObjectIdentityHashMap<>(keys.length);
for (int i = 0; i < keys.length; i++) {
map.put(keys[i], values[i]);
}
return map;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy