直接使用是没问题的

    public static void main(String[] args) throws IOException {List<String> list1 = Arrays.asList("1","2","3");List<String> list2 = Arrays.asList("2", "1");list2.stream().filter(iterm -> {return list1.contains(iterm);}).forEach(System.out::println);}

但是如果局部变量发生变化,则需要新建一个变量,
局部变量list1发生变化,此时需要新建finalList来接收它,才能在stream中使用

    public static void main(String[] args) throws IOException {List<String> list1 = Arrays.asList("1","2","3");List<String> list2 = Arrays.asList("2", "1");list1 = Arrays.asList("3");List<String> finalList = list1;list2.stream().filter(iterm -> {return finalList.contains(iterm);}).forEach(System.out::println);}

原因是:
其实这就要说到Jvm内存模型和线程了,因为实例变量存在堆中,而局部变量是在栈上分配,lambda 表达(匿名内部类) 会在另一个线程中执行。如果在线程中要直接访问一个局部变量,可能线程执行时该局部变量已经被销毁了,而 final 类型的局部变量在 Lambda 表达式(匿名类) 中其实是局部变量的一个拷贝。

参考:
Variable used in lambda expression should be final or effectively final

java stream 使用局部变量相关推荐

  1. Java 10:局部变量类型推断

    Java 10:局部变量类型推断 在本文中,我们将深入研究Java 10中引入的局部变量类型推断的新特性.我们将讨论使用局部变量类型推断的范围和局限性. 此功能是作为JEP(JDK增强提案)的一部分提 ...

  2. java全局变量和局部变量_Java 10:局部变量类型推断

    java全局变量和局部变量 In this article, we would take a deep dive at the new feature of Local-Variable Type I ...

  3. Java-Runoob:Java Stream、File、IO

    ylbtech-Java-Runoob:Java Stream.File.IO 1.返回顶部 1. Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出 ...

  4. Java Stream(流)的分类, 四大基本流的介绍

    上一篇文章已经介绍过什么是流, 以及流的基本概念 http://blog.csdn.net/nvd11/article/details/29917065 本文主要介绍java四大基本流的方法. 一, ...

  5. Java Stream简介, 流的基本概念.

    在Java or .net编程中,  我们经常见到"stream" 这个字眼. 我们大概知道这是个流的意思, 如果看完本文的话, 应该会有1个大概的概念. 一, Java中什么是S ...

  6. 认清JavaScript和JAVA全局变量和局部变量的作用域

    认清JavaScript和JAVA全局变量和局部变量的作用域 2010年2月28日 george 发表评论 阅读评论 通过淘宝面试题来认清JavaScript和JAVA全局变量和局部变量的作用域 注意 ...

  7. Java Stream API性能测试

    Java Stream API性能测试 已经对Stream API的用法鼓吹够多了,用起简洁直观,但性能到底怎么样呢?会不会有很高的性能损失?本节我们对Stream API的性能一探究竟. 为保证测试 ...

  8. java stream中Collectors的用法

    文章目录 简介 Collectors.toList() Collectors.toSet() Collectors.toCollection() Collectors.toMap() Collecto ...

  9. java stream 原理

    java stream 原理 需求 从"Apple" "Bug" "ABC" "Dog"中选出以A开头的名字,然后从中选 ...

最新文章

  1. Oracle微服务框架 Helidon尝鲜(一)!~
  2. Python应用实战-Clumper库 | Groupby具体案例用法
  3. Object.preventExtensions()使用技巧
  4. java中阻止类的继承
  5. Mac 下 maven 安装与配置
  6. activiti工作流简介
  7. 电脑翻译,百度翻译电脑桌面版
  8. FastReport产品介绍及免费下载地址
  9. Vue 集成 PDF.js 实现 PDF 预览和添加水印
  10. 选中的磁盘具有mbr分区表。在efi_电脑磁盘怎么重建主引导记录mbr【详细步骤】...
  11. c语言flag跳出循环,四种方法跳出多层循环(return goto flag try)
  12. 亲密关系科学(03)夫妻相处的智慧
  13. 不只是同构应用(isomorphic 工程化你所忽略的细节)
  14. Svn修改自己已经提交的备注
  15. 阿里云新购服务器磁盘disk挂载完整教程
  16. 西门子PLC 以太网通讯
  17. 在ubuntu下烧写映像文件到nand--基于三星210开发板
  18. multisim 常见报错
  19. Docker入门篇(一)
  20. 若用8位机器码表示二进制数-111

热门文章

  1. Html之实例练习(轮播图片、放大镜效果、面板拖动)
  2. c语言课后作业答案指针,C语言程序基础练习题带答案
  3. XML/YAML文件的输入输出
  4. spring gateway 限流持久化_Spring Cloud Gateway网关如何快速实施限流方案?-Part 6
  5. Stale branches 设置_Mac OS 网络设置教程 wifi设置与宽带设置详解
  6. 计算机符串长度的函数,用js写一个函数,计算出字符串的长度
  7. python命令行模式怎么输入_python获得命令行输入的参数的两种方式
  8. python笔记之matplotlib.pyplot曲线平滑自定义函数:smooth_curv()
  9. go语言服务器连接mysql,golang中连接mysql数据库
  10. bootstrap 导航栏 字体 颜色_设计自己的Hugo主题——开发导航栏