com.carrotsearch.hppc.LongHashSet.rehash()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(3.0k)|赞(0)|评价(0)|浏览(101)

本文整理了Java中com.carrotsearch.hppc.LongHashSet.rehash()方法的一些代码示例,展示了LongHashSet.rehash()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。LongHashSet.rehash()方法的具体详情如下:
包路径:com.carrotsearch.hppc.LongHashSet
类名称:LongHashSet
方法名:rehash

LongHashSet.rehash介绍

[英]Rehash from old buffers to new buffers.
[中]将旧缓冲区重新灰化为新缓冲区。

代码示例

代码示例来源:origin: carrotsearch/hppc

/**
 * Ensure this container can hold at least the
 * given number of elements without resizing its buffers.
 * 
 * @param expectedElements The total number of elements, inclusive.
 */
@Override
public void ensureCapacity(int expectedElements) {
 if (expectedElements > resizeAt || keys == null) {
  final long[] prevKeys =  this.keys;
  allocateBuffers(minBufferSize(expectedElements, loadFactor));
  if (prevKeys != null && !isEmpty()) {
   rehash(prevKeys);
  }
 }
}

代码示例来源:origin: carrotsearch/hppc

/**
 * This method is invoked when there is a new key to be inserted into
 * the buffer but there is not enough empty slots to do so.
 * 
 * New buffers are allocated. If this succeeds, we know we can proceed
 * with rehashing so we assign the pending element to the previous buffer
 * (possibly violating the invariant of having at least one empty slot)
 * and rehash all keys, substituting new buffers at the end.  
 */
protected void allocateThenInsertThenRehash(int slot, long pendingKey) {
 assert assigned == resizeAt 
     && (( keys[slot]) == 0)
     && !((pendingKey) == 0);
 // Try to allocate new buffers first. If we OOM, we leave in a consistent state.
 final long[] prevKeys =  this.keys;
 allocateBuffers(nextBufferSize(mask + 1, size(), loadFactor));
 assert this.keys.length > prevKeys.length;
 // We have succeeded at allocating new data so insert the pending key/value at
 // the free slot in the old arrays before rehashing.
 prevKeys[slot] = pendingKey;
 // Rehash old keys, including the pending key.
 rehash(prevKeys);
}

代码示例来源:origin: harbby/presto-connectors

/**
 * Ensure this container can hold at least the
 * given number of elements without resizing its buffers.
 * 
 * @param expectedElements The total number of elements, inclusive.
 */
@Override
public void ensureCapacity(int expectedElements) {
 if (expectedElements > resizeAt || keys == null) {
  final long[] prevKeys =  this.keys;
  allocateBuffers(minBufferSize(expectedElements, loadFactor));
  if (prevKeys != null && !isEmpty()) {
   rehash(prevKeys);
  }
 }
}

代码示例来源:origin: harbby/presto-connectors

/**
 * This method is invoked when there is a new key to be inserted into
 * the buffer but there is not enough empty slots to do so.
 * 
 * New buffers are allocated. If this succeeds, we know we can proceed
 * with rehashing so we assign the pending element to the previous buffer
 * (possibly violating the invariant of having at least one empty slot)
 * and rehash all keys, substituting new buffers at the end.  
 */
protected void allocateThenInsertThenRehash(int slot, long pendingKey) {
 assert assigned == resizeAt 
     && (( keys[slot]) == 0)
     && !((pendingKey) == 0);
 // Try to allocate new buffers first. If we OOM, we leave in a consistent state.
 final long[] prevKeys =  this.keys;
 allocateBuffers(nextBufferSize(mask + 1, size(), loadFactor));
 assert this.keys.length > prevKeys.length;
 // We have succeeded at allocating new data so insert the pending key/value at
 // the free slot in the old arrays before rehashing.
 prevKeys[slot] = pendingKey;
 // Rehash old keys, including the pending key.
 rehash(prevKeys);
}

相关文章