in concurrency-loadbalancer-core/src/main/java/com/uber/concurrency/loadbalancer/utils/HashIndexedPriorityQueue.java [218:235]
private E removeByIndex(int index) {
int size = entityList.size();
if (index >= size) {
return null;
}
E entity = entityList.get(index);
entityToIndex.remove(entity);
if (index == size - 1) {
entityList.remove(index);
} else {
E replacement = entityList.remove(size - 1);
entityList.set(index, replacement);
entityToIndex.put(replacement, index);
siftDown(index, replacement);
}
return entity;
}