相关疑难解决方法(0)

为什么共享可变性不好?

我正在观看关于Java的演讲,有一次,讲师说:

"可变性是可以的,分享是好的,共享的可变性是魔鬼的工作."

他所指的是以下一段代码,他认为这是一种"极其糟糕的习惯":

//double the even values and put that into a list.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 1, 2, 3, 4, 5);
List<Integer> doubleOfEven = new ArrayList<>();

numbers.stream()
       .filter(e -> e % 2 == 0)
       .map(e -> e * 2)
       .forEach(e -> doubleOfEven.add(e));
Run Code Online (Sandbox Code Playgroud)

然后他继续编写应该使用的代码,即:

List<Integer> doubleOfEven2 =
      numbers.stream()
             .filter(e -> e % 2 == 0)
             .map(e -> e * 2)
             .collect(toList());
Run Code Online (Sandbox Code Playgroud)

我不明白为什么第一段代码是"坏习惯".对我而言,他们都达到了同样的目标.

java immutability java-8 java-stream

46
推荐指数
3
解决办法
4580
查看次数

标签 统计

immutability ×1

java ×1

java-8 ×1

java-stream ×1