【发布时间】:2017-06-04 07:13:03
【问题描述】:
我有下面的代码,我在地图中使用过滤器和替换函数进行过滤,然后我正在收集来替换我的原始数组。我的问题是我在 inputArr 中的原始对象是否被丢弃并创建了新对象,或者在我进行收集时是否正在修改相同的对象?
public static void test () {
inputArr.stream().filter(s -> toRemove.contains(s)).
forEach(u -> u.replaceAll("2","X"));
inputArr = inputArr.stream().map(x -> filterReplace(x,toRemove)).collect(Collectors.toList());
System.out.println(inputArr);
}
static String filterReplace(String input, Set<String> toRemove) {
if (toRemove.contains(input)) {
return "X";
}
else
return input;
}
【问题讨论】:
-
提示:您可以将
s -> toRemove.contains(s)替换为toRemove::contains。 -
@SriK 数组?看起来
inputArr实际上是一个列表
标签: java functional-programming java-stream