在我的使用场景中,我想要更新一个变量的值,并在下一次迭代中引用它。
但是Java编译器报错了。以下是我的代码:
static String convertList(
List<Map.Entry<String, String>> map,
String delimiter,
long maxLength
) {
long currentLength = 0L;
return map.stream()
.map(e->e.getKey() + "=" + e.getValue())
.filter(p->{
long pLength = p.getBytes(StandardCharsets.UTF_8).length;
currentLength = currentLength + pLength;
if (currentLength <= maxLength) {
return true;
} else {
return false;
}
})
.collect(Collectors.joining(delimiter));
}
我正在尝试将列表中的值转换为字符串,直到长度[till this iteration] ≤ maxlength。
有人能帮我修复这个问题吗?我遇到了“lambda表达式引用的本地变量必须是final或有效final”的错误。
if (currentLength <= maxLength) { return true; } else { return false; }
这样的语句毫无意义。可以改写为return currentLength <= maxLength;
。 - Holger