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

x33g5p2x  于2022-01-26 转载在 其他  
字(3.5k)|赞(0)|评价(0)|浏览(57)

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

ObjectIntHashMap.allocateBuffers介绍

[英]Allocate new internal buffers. This method attempts to allocate and assign internal buffers atomically (either allocations succeed or not).
[中]分配新的内部缓冲区。此方法尝试以原子方式分配和分配内部缓冲区(分配成功与否)。

代码示例

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

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

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

/**
 * This method is invoked when there is a new key/ value pair to be inserted into
 * the buffers 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, KType pendingKey, int pendingValue) {
 assert assigned == resizeAt
     && (((KType) keys[slot]) == null)
     && !((pendingKey) == null);
 // Try to allocate new buffers first. If we OOM, we leave in a consistent state.
 final KType[] prevKeys = (KType[]) this.keys;
 final int[] prevValues =  this.values;
 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;
 prevValues[slot] = pendingValue;
 // Rehash old keys, including the pending key.
 rehash(prevKeys, prevValues);
}

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

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

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

/**
 * This method is invoked when there is a new key/ value pair to be inserted into
 * the buffers 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, KType pendingKey, int pendingValue) {
 assert assigned == resizeAt
     && (((KType) keys[slot]) == null)
     && !((pendingKey) == null);
 // Try to allocate new buffers first. If we OOM, we leave in a consistent state.
 final KType[] prevKeys = (KType[]) this.keys;
 final int[] prevValues =  this.values;
 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;
 prevValues[slot] = pendingValue;
 // Rehash old keys, including the pending key.
 rehash(prevKeys, prevValues);
}

相关文章