StringBuilder buf = new StringBuilder();
String result = list.forEach(buf->append(c).toString());
Приведенный выше фрагмент кода пытается вызвать метод append
, не связанный с buf
, что не является тем, что вы хотите сделать (особенно потому, что forEach
не возвращает String
). Вместо этого вы можете использовать:
StringBuilder buf = new StringBuilder();
list.forEach(buf::append);
String result = buf.toString();
Если бы вы использовали лямбда, то это эквивалентно:
StringBuilder buf = new StringBuilder();
list.forEach(c -> buf.append(c));
String result = buf.toString();
Однако я бы рекомендовал потоковое List
, а затем вместо этого собирать его в String
:
List<Character> list; //list is already populated
String result = list.stream().map(Character::toString).collect(Collectors.joining());
Если вы хотите явно использовать лямбда вместо ссылки на метод, вы можете изменить Character::toString
на c -> c.toString()
.