Java Arraylist.forEach()和Arraylist.replaceAll()之间的差异
我有一个关于Java Arraylist.forEach()和Arraylist.replaceAll()之间的差异,java,arraylist,foreach,replaceall,Java,Arraylist,Foreach,Replaceall,我有一个关于Arraylist.forEach()和Arraylist.replaceAll()之间的区别的问题。我知道Arraylist.forEach()用于对列表中的每个元素执行操作,但似乎Arraylist.replaceAll()做了完全相同的事情。但是由于某种原因,当您决定执行a.forEach(e->e.concat(“test”);假设a是字符串的Arraylist时,Arraylist不会将“test”连接到Arraylist中每个字符串的末尾。但是,如果执行a.replace
Arraylist.forEach()
和Arraylist.replaceAll()
之间的区别的问题。我知道Arraylist.forEach()
用于对列表中的每个元素执行操作,但似乎Arraylist.replaceAll()
做了完全相同的事情。但是由于某种原因,当您决定执行a.forEach(e->e.concat(“test”);
假设a是字符串的Arraylist时,Arraylist不会将“test”连接到Arraylist中每个字符串的末尾。但是,如果执行a.replaceAll(e->e.concat(“test”)操作
,串联起作用。为什么会是这种情况?我所说的一个例子在这幅图中:
答案是B,但C对我来说似乎最有意义。感谢您的帮助。返回一个新字符串,但忽略lambda表达式的返回值。(其声明的参数是aConsumer
,它没有返回值。)
将其函数的返回值放回列表中。这就是它的用途。返回一个新字符串,但忽略lambda表达式的返回值。(其声明的参数是一个使用者,它没有返回值。)
将其函数的返回值放回列表中。这就是它的用途。请记住字符串是不可变的。调用forEach()
时,您没有将concat
的返回值赋给任何对象,而是将replaceAll()赋值
不会,因为它每次都覆盖当前元素。请记住字符串是不可变的。调用forEach()
时,您不会将concat
的返回值赋给任何对象,但是replaceAll()
会,因为它每次都覆盖当前元素。.forEach()
获取列表中的每个元素,然后应用函数。通常,您会调用对象的函数。在这种情况下,您会丢弃返回值,而不会更改对象
.replaceAll()
获取列表中的每个元素并应用一个函数。之后,返回值将在特定位置设置
.concat()
由于字符串不可变,不会更改字符串引用,但它将在新引用中返回更改后的字符串。.forEach()
获取列表中的每个元素,然后应用函数。通常,您会调用对象的函数。在这种情况下,您会丢弃返回值,而不会更改对象
.replaceAll()
获取列表中的每个元素并应用一个函数。之后,返回值将在特定位置设置
.concat()
由于字符串不可变,不会更改字符串引用,但它将在新引用中返回更改后的字符串。名称准确解释了方法的作用
forEach将每个元素传递给函数,但只要对象是不可变类型,它就不会修改数组成员。因此,它不希望函数返回值(void)。数组始终保持不变。字符串类型是不可变的,因此任何更改都不会影响数组中保存的对象
replaceAll将所有数组成员传递给函数,并检查该函数返回的对象,当然还将该对象存储回数组,这意味着替换。请注意,在该方法中,函数必须返回一个对象。对于String.concat,将返回连接的字符串,从而连接的字符串显示在数组中。T他准确地解释了这些方法的作用
forEach将每个元素传递给函数,但只要对象是不可变类型,它就不会修改数组成员。因此,它不希望函数返回值(void)。数组始终保持不变。字符串类型是不可变的,因此任何更改都不会影响数组中保存的对象
replaceAll将所有数组成员传递给函数,并检查该函数返回的对象,当然还将该对象存储回数组,这意味着替换。请注意,在该方法中,函数必须返回一个对象。对于String.concat,将返回连接的字符串,从而连接的字符串显示在数组中。I我想这是因为
a、 forEach迭代arrayList中的每个元素,然后Concat返回一个新字符串。它不会更改arrayList中的原始字符串
a、 Replaceall将替换arrayList中的原始字符串
我想这是因为
a、 forEach迭代arrayList中的每个元素,然后Concat返回一个新字符串。它不会更改arrayList中的原始字符串
a、 Replaceall将替换arrayList中的原始字符串
concat
返回一个新字符串,但forEach
忽略lambda表达式的返回值。replaceAll
不忽略lambda表达式的返回值。concat
返回一个新字符串,但forEach
忽略lambda表达式的返回值。replaceAll
不忽略lambda表达式的返回值。replaceAll
这很有意义。谢谢!啊,这让我很高兴谢谢!