如何使用java流在局部变量中存储字符串值

如何使用java流在局部变量中存储字符串值,java,java-8,java-stream,Java,Java 8,Java Stream,我正在使用java 8流功能,现在我想在局部变量中存储字符串值,但它显示从lambda表达式引用的局部变量必须是final或有效final。我还尝试了final关键字,它正在变为final。我需要澄清它是否可能 public static void main(String[] args) { List list = Arrays.asList("java", "stream", "scala"); String data = ""; list.fo

我正在使用java 8流功能,现在我想在局部变量中存储字符串值,但它显示从lambda表达式引用的局部变量必须是final或有效final。我还尝试了final关键字,它正在变为final。我需要澄清它是否可能

public static void main(String[] args) {
        List list = Arrays.asList("java", "stream", "scala");
        String data = "";
        list.forEach(action -> {
            data = action.toString();
            System.out.println("data :" + data);
        });
    } 
List=Arrays.asListjava、stream、scala; StringBuilder数据=新的StringBuilder; list.forEachaction->{ data.replace0,data.length,action; System.out.printlndata:+数据; }; 虽然我不推荐。
若您试图重新初始化final变量,它将抛出错误

我建议您使用arraylist/list/array作为最终选项,并向列表中添加值,示例如下

final ArrayList<String> strings = new ArrayList<>();
        List list = Arrays.asList("java", "stream", "scala");
        list.forEach(action -> {
            strings.add(action.toString());

        });

你需要lambda以外的数据吗?看起来你可以删除变量,即使它是可能的,这有什么意义?您可以用列表中的每个元素覆盖数据的值,因此它将在最后包含最后一个元素。是否要连接所有这些字符串?若你们这样做了,还有其他的方法来实现这一点。是的,我需要在lambda之外。无论我在列表中存储了什么。例如:data=javaShow如何处理lambdaw之外的数据您希望如何处理该变量@AjithDeivam和为什么