Как пропустить последовательные элементы в потоке Java?JAVA

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

Сообщение Anonymous »

Я пытаюсь включить больше функционального программирования в свою работу из-за отсутствия побочных эффектов в коде, который я пишу, и его полезности в параллельном коде. Я столкнулся с необходимостью отфильтровать последовательные элементы потока Java и не смог придумать функционального подхода лучше, чем старый добрый императивный подход.
Скажем, у меня есть программа, которая ведет журнал. его аргументы, и я хочу отфильтровать два последовательных элемента. Например, -o anOption, -k aSecretKeyWhoseValueWeShouldNotLog, -aotherOption. Что мне нужно в журнале, так это -o anOption, -aotherOption.
Я придумал несколько подходов, но ни один из них не был таким понятным, как использование цикла for, который проиндексировано мимо того, что мне нужно было отфильтровать.
Кажется, это довольно распространенное желание сделать. Есть ли шаблон, использующий потоки Java или что-то еще, который обычно используется для подобных вещей?
Вот что у меня получилось:
static String filterSecretKeyOutOfCommandLineLogString(final String[] args) {
return joinArgsToString(filterOptionAndValueOutOfCommandLineLogString(SECRET_KEY, args));
}

private static String joinArgsToString(final String[] args) {
return Joiner.on(ARG_JOINER_DELIMITER).join(args);
}

private static String[] filterOptionAndValueOutOfCommandLineLogString(final Option option, final String[] args) {
final List filteredList = new ArrayList();

final int numArgs = args.length;

for (int i = 0; i < numArgs; ++i) {
if (Arguments.matchesOption(option, args)) {
++i;
} else {
filteredList.add(args);
}
}

return filteredList.toArray(new String[0]);
}


Подробнее здесь: https://stackoverflow.com/questions/479 ... ava-stream
Ответить

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

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

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

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

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