我正在使用Java 8流,并试图修改forEach终端操作中的对象内容。
我在这里面临的问题是,我可以修改列表
对象内容,但不能修改列表
的内容
代码片段如下:
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
。最后,您将收到final
结果,您可以使用final
方法之一来完成(并实际运行整个流工作)流
:
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);
这里有初始数组。您希望执行以下操作:
最终
步骤);最终
步骤)。为此,不必创建流
两次。请使用一个:
Stream.of(2, 4, 6, 8, 12, 17, 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(...)
创建一个流
,然后我们向流筛选
和映射
添加两个步骤,然后finalize
或使用foreach
启动创建的流。
两者的计算结果都为false。(顺便说一句,比较是不必要的,因为类不会重写Object中的equals。) 和都是,因为它们可比,没有错误。比较两个具有不同声明的泛型类型的对象是非法的。 在进一步检查时,字段将通过调用包私有的本机方法,如下所示: 除了Java文档对“表示基元类型”的模糊暗示之外,我找不到任何关于这方面的文档。这个领域有什么用处吗?它在包装类本身中没有使用。 (编辑) 是真的。 还
从 BaseX 服务器执行的 X 查询中,我得到这样的结果: 我需要用JAXB将这个结果转换成Protocollo对象的列表,以便用JList显示它们。因此,在这里的一次讨论之后,我声明了下面的类: 和 最后,我这样执行对话: 我不断得到这个例外: 我想我在注释方面犯了一些错误。你能帮忙吗?
包装对象 定义 包装对象的构造函数 包装对象实例的方法 原始类型的自动转换 自定义方法 Boolean对象 概述 Boolean实例对象的布尔值 Boolean函数的类型转换作用 包装对象 定义 在JavaScript中,“一切皆对象”,数组和函数本质上都是对象,就连三种原始类型的值——数值、字符串、布尔值——在一定条件下,也会自动转为对象,也就是原始类型的“包装对象”。 所谓“包装对象”,就是分
问题内容: 我一直在研究各种hibernate教程和示例,因为它们具有标识/主键属性,有些使用Java基本类型,有些使用包装器类型。 与 为什么以及何时将一个用作实体密钥? 问题答案: 从Hibernate的角度来看,它没有任何改变,因为Hibernate使用相同的Hibernate类型来表示它们。 然而,正如字节码忍者指出,你不能区分原始INT的默认值从分配的同时也有可能没有歧义(一个ID总是意
我试图了解Java原语和包装器是如何工作的。让我们考虑以下示例。 由于整数是不可变的和非原语,语句将编译为以下内容 这将创建大约10000个整数对象(每次调用新)和将整数拆箱为int的成本。 我说的对吗?
给定这样一个对象: 用法如下: 我想用更面向对象的东西来代替这个while循环,比如: 因此,我可以很容易地,例如,使匹配流,坚持使用流畅的API等。 问题是,我不知道也找不到更简洁的方法来创建这个流或迭代器。像上面这样的匿名类对我来说太冗长了。 我曾希望在jdk中找到像或这样的东西,但到目前为止还没有运气。毫无疑问,像apache commons或番石榴这样的库为此提供了一些东西,但让我们说我不