Как использовать потоки Java 8, чтобы найти все значения, предшествующие большему значению?JAVA

Программисты JAVA общаются здесь
Anonymous
Как использовать потоки Java 8, чтобы найти все значения, предшествующие большему значению?

Сообщение Anonymous »

вариант использования < /h1>

Через некоторые кодирующие каты, размещенные на работе, наткнулся на эту проблему, что я не уверен, как решить. < /p>


Использование потоков Java 8, с учетом списка положительных целых чисел, создайте список целых чисел
, где целое число предшествовало большему значение. < /p>

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

[10, 1, 15, 30, 2, 6]
< /code>

Приведенный выше ввод будет вытекать: < /p>

[1, 15, 2]
< /code>

Поскольку 1 предшествует 15, 15 предшествующих 30 и 2 предшествующих 6. < /p>
< /blockquote>

< H2> не потоковой раствор < /h2>

public List findSmallPrecedingValues(final List values) {

List result = new ArrayList();
for (int i = 0; i < values.size(); i++) {
Integer next = (i + 1 < values.size() ? values.get(i + 1) : -1);
Integer current = values.get(i);
if (current < next) {
result.push(current);
}
}
return result;
}
< /code>

 Что я попробовал < /h2>

Проблема, которую я столкнулся, заключается в в лямбде. < /p>

return values.stream().filter(v -> v < next).collect(Collectors.toList());
< /code>

 Вопрос < /h2>

[list]
[*] Можно ли получить следующее значение в потоке?
[*] Должен ли я использовать карту 
и сопоставление с парой , чтобы получить доступ к следующему?
[/list]

Подробнее здесь: https://stackoverflow.com/questions/300 ... rger-value

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