Вы не можете собрать после .forEach()
, потому что это терминальная операция без возвращаемого значения (void
).Таким образом, вы не можете собрать.Чтобы он работал, вы можете использовать следующий фрагмент:
String sql = IntStream.range(0, selectFields.size())
.mapToObj(i -> uuidFunction.get(i) != null
? uuidFunction.get(i) + "(" + selectFields.get(i) + ")"
: selectFields.get(i)
)
.collect(Collectors.joining(", ", "SELECT ", " FROM test_table");
Обратите внимание, что перегрузка joining
с 3 параметрами имеет следующую подпись:
public static Collector<CharSequence, ?, String> joining(CharSequence delimiter,
CharSequence prefix,
CharSequence suffix){...}