Как извлечь строку из парыиспользуя Java Stream.of? - PullRequest
1 голос
/ 22 октября 2019

У меня есть Stream<Function<String, Pair<Boolean, String>> критерий - это переменные лямбда-выражений

Stream.of(criteria)
      .map(func -> func.apply(input))
      .filter(result -> result.getValue0() == false);

Я хочу извлечь строку, если getValue0 == false. Я хочу объединить строку в конце. Кто-нибудь может дать мне какие-нибудь указатели?

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Я не уверен, тип критериев, List<Function> или Function. Все, что вы можете попробовать двумя способами следующим образом.

public static class Pair<F, S> {
    private F first;
    private S second;

    public Pair(F first, S second) {
        this.first = first;
        this.second = second;
    }
}

public static void main(String[] args) {

    // criteria is a function
    Function<String, Pair<Boolean, String>> criteria = (x) -> new Pair<>(true, x);
    Stream.of(criteria)
            .map(func -> func.apply(null))
            .filter(result -> !result.first)
            .map(result -> result.second)
            .collect(Collectors.joining(","));

    // criteria is a list
    List<Function<String, Pair<Boolean, String>>> criterias = new ArrayList<>();
    criterias.stream()
            .map(func -> func.apply(null))
            .filter(result -> !result.first)
            .map(result -> result.second)
            .collect(Collectors.joining(","));
}
0 голосов
/ 22 октября 2019

Что вы уже имеете в своем фрагменте кода, так это то, что функция применяется к каждому из критериев. Тогда вы фильтруете только те, которые имеют значение true. Это похоже на то, что вы хотите. Может быть, перевернуть результат, как в result -> !result.getValue0()? Затем вам понадобится еще одна операция map для получения потока строк вместо пар и операция collect для их соединения. Как указано в комментариях, взгляните на Collectors.joining .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...