@Override public HollowObjectHashCodeFinder getHashCodeFinder() { return currentDataAccess.getHashCodeFinder(); }
@Override public boolean contains(HollowSet<T> set, int ordinal, Object o) { if(getSchema().getHashKey() != null) { for(int i=0;i<ordinals.length;i++) { if(ordinals[i] != -1 && set.equalsElement(ordinals[i], o)) return true; } } else { int hashCode = dataAccess.getDataAccess().getHashCodeFinder().hashCode(o); int bucket = HashCodes.hashInt(hashCode) & hashMask; while(ordinals[bucket] != -1) { if(set.equalsElement(ordinals[bucket], o)) return true; bucket ++; bucket &= hashMask; } } return false; }
@Override public boolean containsKey(HollowMap<K, V> map, int ordinal, Object key) { if(getSchema().getHashKey() != null) { for(int i=0;i<ordinals.length;i+=2) { if(ordinals[i] != -1 && map.equalsKey(ordinals[i], key)) return true; } } else { int hashCode = dataAccess.getDataAccess().getHashCodeFinder().hashCode(key); int bucket = (HashCodes.hashInt(hashCode) & hashMask) * 2; while(ordinals[bucket] != -1) { if(map.equalsKey(ordinals[bucket], key)) { return true; } bucket += 2; bucket &= ordinals.length - 1; } } return false; }
@Override public boolean containsKey(HollowMap<K, V> map, int ordinal, Object key) { HollowMapEntryOrdinalIterator iter; if(getSchema().getHashKey() != null) { iter = dataAccess.ordinalIterator(ordinal); } else { int hashCode = dataAccess.getDataAccess().getHashCodeFinder().hashCode(key); iter = dataAccess.potentialMatchOrdinalIterator(ordinal, hashCode); } while(iter.next()) { if(map.equalsKey(iter.getKey(), key)) return true; } return false; }
@Override public boolean contains(HollowSet<T> set, int ordinal, Object o) { HollowOrdinalIterator iter; if(getSchema().getHashKey() != null) { iter = dataAccess.ordinalIterator(ordinal); } else { int hashCode = dataAccess.getDataAccess().getHashCodeFinder().hashCode(o); iter = dataAccess.potentialMatchOrdinalIterator(ordinal, hashCode); } int potentialOrdinal = iter.next(); while(potentialOrdinal != HollowOrdinalIterator.NO_MORE_ORDINALS) { if(set.equalsElement(potentialOrdinal, o)) return true; potentialOrdinal = iter.next(); } return false; }
@Override public V get(HollowMap<K, V> map, int ordinal, Object key) { if(getSchema().getHashKey() != null) { for(int i=0;i<ordinals.length;i+=2) { if(ordinals[i] != -1 && map.equalsKey(ordinals[i], key)) return map.instantiateValue(ordinals[i+1]); } } else { int hashCode = dataAccess.getDataAccess().getHashCodeFinder().hashCode(key); int bucket = (HashCodes.hashInt(hashCode) & hashMask) * 2; while(ordinals[bucket] != -1) { if(map.equalsKey(ordinals[bucket], key)) { return map.instantiateValue(ordinals[bucket + 1]); } bucket += 2; bucket &= ordinals.length - 1; } } return null; }
@Override public V get(HollowMap<K, V> map, int ordinal, Object key) { HollowMapEntryOrdinalIterator iter; if(getSchema().getHashKey() != null) { iter = dataAccess.ordinalIterator(ordinal); } else { int hashCode = dataAccess.getDataAccess().getHashCodeFinder().hashCode(key); iter = dataAccess.potentialMatchOrdinalIterator(ordinal, hashCode); } while(iter.next()) { if(map.equalsKey(iter.getKey(), key)) return map.instantiateValue(iter.getValue()); } return null; }