В основном у меня есть очень большой массив объектов, и мне нужно удалить 10% объектов с наименьшей степенью точности.Данные выборки из большого массива
Каждый объект имеет связанную с ним переменную пригодности (двойную). У меня нет числа, которое определяет, подходит ли объект, я просто хочу, чтобы он был наименее приспособлен.
Каков наилучший способ получения (выборки) наименее подходящих объектов?
Один способ может быть случайным образом выбирает путь 20%, сортирует данные, а затем удаляет 10%. Но я думаю, что это не очень умный способ сделать это.
Другой способ сохранить массив отсортированным во все времена, а затем удалить первые 10%. Но я не думаю, что это очень хорошо, потому что вам придется всегда сортировать массив при вставке/обновлении, что является большим накладным расходами.
Почему вы не попробуете [Приоритетную очередь] (http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html), что заказы по фитнесу? Затем просто вызовите 'remove()' до тех пор, пока вы не очистите свои 10%? – thegrinner
Спасибо, я не знал о очередях Priority, позвольте мне попробовать: – RegUser
@thegrinner Я понял, что не могу использовать приоритетную очередь, потому что мне нужно иметь возможность извлекать элементы, используя их индексированную позицию. Есть ли какая-либо другая структура данных, которую я могу использовать? – RegUser