У меня есть следующий код, который находит максимальное значение и сдвигает значения влево:
@Override
public void remove() throws QueueUnderflowException {
int max = 0;
int index = 0;
if (isEmpty()) {
throw new QueueUnderflowException();
} else {
for (int i = 0; i < tailIndex + 1; i++) {
int current = ((PriorityItem<T>) storage[i]).getPriority();
if (current > max) {
max = current;
index = i;
}
}
for (int i = 0; i < tailIndex + 1; i++) {
int current = ((PriorityItem<T>) storage[i]).getPriority();
if (current >= max) {
storage[i] = storage[i + 1];
}
}
tailIndex = tailIndex - 1;
}
}
Однако элементы смещаются только один раз из-за оператора if, который делает это в течение времени, когда значениеМакс, как бы я сдвинуть оставшиеся значения без дублирования.
вот вход:
[(y, 1), (o, 8), (u, 7), (o, 0)]
Требуемый выход:
(y, 1), (u, 7), (o, 0)]
Токовый выход:
[(y, 1), (u, 7), (u, 7)]