Пример использования
Через некоторое кодирование Katas, опубликованное на работе, я наткнулся на эту проблему, что не уверен, как ее решить.
Используя потоки Java 8, учитывая список положительных целых чисел, создайте список целых чисел, где целое число предшествует большему значению.
[10, 1, 15, 30, 2, 6]
Вышеприведенный ввод даст:
[1, 15, 2]
так как 1 предшествует 15, 15 предшествует 30, а 2 предшествует 6.
Непотоковое решение
public List<Integer> findSmallPrecedingValues(final List<Integer> values) {
List<Integer> result = new ArrayList<Integer>();
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;
}
Что я пробовал
Проблема у меня есть, я не могу понять, как получить доступ к следующей в лямбда.
return values.stream().filter(v -> v < next).collect(Collectors.toList());
Вопрос
- Можно ли получить следующее значение в потоке?
- Должен ли я использовать
map
и сопоставлять сPair
для доступа к следующей?