Найдите последний элемент, соответствующий дорогостоящему условию, из списка, используя Stream.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Найдите последний элемент, соответствующий дорогостоящему условию, из списка, используя Stream.

Сообщение Anonymous »

У меня есть упорядоченный список, содержащий примерно один миллион элементов, из которых я ищу последний элемент, соответствующий определенному условию, но это условие сложно вычислить, поэтому лучше начать с конца. . Всегда есть элементы, совпадающие примерно по log(n), минимум 1.

Я могу сделать это вручную:

Код: Выделить всё

List elements = ...;
Element element = null;
for (var it = elements.listIterator(elements.size()); it.hasPrevious(); ) {
var candidate = it.previous();
if (heavyConditionPredicate.test(candidate)) {
element = candidate;
break;
}
}
Есть ли способ написать это с использованием Stream, чтобы HeavyConditionPredicate не проверялся для каждого элемента списка? Если бы HeavyConditionPredicate не было бы так сложно вычислить, я бы использовал альтернативные средства, но мне не так повезло.

Обратите внимание, что elements может быть любым типом List, и тот, который я получаю, не обязательно реализует RandomAccess, поэтому доступ к списку по их индексу также может быть дорогостоящим.

Подробнее здесь: https://stackoverflow.com/questions/610 ... ing-stream
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»