-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSideEffectListMain.java
More file actions
44 lines (37 loc) · 1.42 KB
/
Copy pathSideEffectListMain.java
File metadata and controls
44 lines (37 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package functional;
import java.util.ArrayList;
import java.util.List;
/*
부수 효과(Side Effect) 최소화
함수형 프로그래밍에서는 상태 변화를 최소화하기 위해 변수나 객체를 변경하는 것을 지양한다.
이로 인해 프로그램의 버그가 줄어들고, 테스트나 병렬 처리(Parallelism), 동시성(Concurency) 지원이 용이해진다.
*/
public class SideEffectListMain {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("banana");
System.out.println("before list1 = " + list1);
changeList1(list1);
System.out.println("after list1 = " + list1);
List<String> list2 = new ArrayList<>();
list2.add("apple");
list2.add("banana");
System.out.println("before list2 = " + list2);
List<String> result = changeList2(list2);
System.out.println("after list2 = " + list2);
System.out.println("result = " + result);
}
private static List<String> changeList2(List<String> list) {
List<String> newList = new ArrayList<>();
for (String s : list) {
newList.add(s+"_complete");
}
return newList;
}
private static void changeList1(List<String> list) {
for (int i = 0; i < list.size(); i++) {
list.set(i, list.get(i) + "_complete");
}
}
}