Как использовать метод set с потоком? - PullRequest
0 голосов
/ 27 июня 2018

Здравствуйте, у меня есть эти поля в БД:

String abcTitlename;
 String abcTitlepage;

И я хочу получить эти поля от сущности, но я хочу использовать без префикса 'abc'. Пример

мое поле имеет имя abcTittlename, но я хочу получить это имя.

Могу ли я получить эти поля с фильтром? Могу ли я сделать это с помощью метода replaceAll? как это:

stream = stream.map(e -> ((DbFields)e).setFieldname(((DbFields) e).getFieldname().replace("abc","")))
                        .filter(e -> ((DbFields) e).getIscomputed().equals(0));

        return stream.map(e -> ((DbFields) e).getFieldname().toLowerCase(Locale.US)).collect(Collectors.toSet());

    }

И у меня есть класс DbFields, в котором есть методы getFieldName (), getFieldtype () и *. 1011 *

Я получаю

Error:(170, 29) java: incompatible types: inference variable R has incompatible bounds
    upper bounds: java.lang.Object
    lower bounds: void

ошибка. Что я делаю неправильно? Помогите мне, пожалуйста ..

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Возможно, вы захотите заменить .map на .peek, поскольку вы не отображаете другой объект. Вы просто обновляете тот же объект.

И во втором вызове карты вы не обновляете имя поля.

0 голосов
/ 27 июня 2018

У вас может быть отдельный вызов map с только что приведением типов в начале, так что ваш код не будет загрязнен всеми этими приведениями.

Вот пример, переписанный с помощью предложенного peek метода

return stream.map(e -> (DbFields)e)
      .filter(e -> e.getIscomputed().equals(0))
      .peek(e -> e.setFieldname(e.getFieldname().replace("abc", "")))
      .map(e -> e.getFieldname().toLowerCase(Locale.US))
      .collect(Collectors.toSet());
0 голосов
/ 27 июня 2018

вернуть объект после того, как вы им манипулируете

stream = stream.map(e -> {
             ((DbFields)e).setFieldname(((DbFields) e).getFieldname().replace("abc",""));
             return e;
         })
         ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...