Java 8 – 使用对象和原始包装器进行流式处理
发布时间:2020-12-15 08:27:54 所属栏目:Java 来源:网络整理
导读:我正在使用 java 8流并尝试修改forEach终端操作中的对象内容. 我在这里面临的问题是我能够修改List Employee对象内容但不能修改List Integer的内容 代码段如下: public static void streamExample() { ListEmployee listEmp = Arrays.asList(new Employee()
我正在使用
java 8流并尝试修改forEach终端操作中的对象内容.
我在这里面临的问题是我能够修改List< Employee>对象内容但不能修改List< Integer>的内容 代码段如下: public static void streamExample() { List<Employee> listEmp = Arrays.asList(new Employee()); listEmp.stream().forEach(a -> a.setEmptName("John Doe")); listEmp.stream().forEach(System.out::println); List<Integer> listInteger = Arrays.asList(2,4,6,8,12,17,1234); listInteger.stream().filter(v -> v % 2 == 0).forEach(a -> a=a+1); listInteger.stream().forEach(System.out::println); } 我想知道更改没有反映在列表中,因为在执行a = a 1操作时取消装箱整数对象但不确定. 解决方法
你没有使用Stream的最佳方法.请将Stream中的每个步骤视为修改已存在(或创建新)元素并将其返回到Stream.最后,您将收到最终结果,并且您可以使用最终方法之一来最终确定(并实际运行整个流)Stream:
List<Integer> listInteger = Arrays.asList(2,1234); listInteger.stream().filter(v -> v % 2 == 0).forEach(a -> a = a + 1); listInteger.stream().forEach(System.out::println); 这里有初始数组.你想做以下事情: >过滤掉一些元素(这不是最后一步); 为此,您不必两次创建Streams.使用一个: Stream.of(2,1234) // create stream (there're many way to do it) .filter(v -> v % 2 == 0) // filter out required elements .map(v -> v + 1) // transform elements using given rule .forEach(System.out::println); // finalize stream with printing out each element separately 注意:Stream.of(…)创建一个Stream,然后我们向流过滤器和map添加两个步骤,然后使用forEach完成或START创建流. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |