package Day8;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
//데이터는 원본 유지하고 새로운걸 만들어야 한다.
//불변성
list.add(1);
list.add(2);
list.add(3);
//만약 list * 2한 데이터를 요구한다면? 아래처럼 하면 된다.
List<Integer> list2 = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
list2.add(list.get(i) * 2);
}
System.out.println(list);
System.out.println(list2);
}
}
이렇게 하면 불편하기 때문에 stream이 나온 것이다. 자바 1.8부터 나왔다.
2.stream
// 이렇게 쓰는게 불편해서 stream이 나왔다.
list.stream().map(a -> {
}); //map(a->)익명함수를 만드는것. 이게 기본 틀
list.stream().map(el -> { //map(a->)익명함수를 만드는것.
System.out.println(el);
return el * 2;
}).collect(Collectors.toList());
List<Integer> collect = list.stream().map(el -> { //map(a->)익명함수를 만드는것.
System.out.println(el); // el은 엘리멘트.
return el * 2; // el ->하나씩 꺼내서 보여줌.
}).collect(Collectors.toList()); //여기서 다시 배열에 넣어주는 것.
System.out.println(collect); //그래서 배열로 나옴
아래와 같이 바꿈
List<Integer> collect = list.stream().map(el -> //map(a->)익명함수를 만드는것.
el * 2 // el ->하나씩 꺼내서 보여줌.
).collect(Collectors.toList()); //여기서 다시 배열에 넣어주는 것.
System.out.println(collect);
출력
[1, 2, 3][2, 4, 6]
1
2
3
[2, 4, 6]
package Day8;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
//데이터는 원본 유지하고 새로운걸 만들어야 한다.
//불변성
list.add(1);
list.add(2);
list.add(3);
//만약 list * 2한 데이터를 요구한다면? 아래처럼 하면 된다.
List<Integer> list2 = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
list2.add(list.get(i) * 2);
}
System.out.println(list);
System.out.println(list2);
// 이렇게 쓰는게 불편해서 stream이 나왔다.
//map 길이 같은 리스트를 만드는 것.
List<Integer> collect = list.stream().map(el -> //map(a->)익명함수를 만드는것.
el * 2 // el ->하나씩 꺼내서 보여줌.
).collect(Collectors.toList()); //여기서 다시 배열에 넣어주는 것.
System.out.println(collect); //그래서 배열로 나옴
}
}
List<Integer> collect = list.stream().map(el -> //map(a->)익명함수를 만드는것.
el * 2 // el ->하나씩 꺼내서 보여줌.
).collect(Collectors.toList()); //여기서 다시 배열에 넣어주는 것.
System.out.println(collect); //그래서 배열로 나옴
List<Integer> collect1 = list.stream().filter(el -> el % 2 == 0).collect(Collectors.toList());
//filter - 거른다~ el - 하나씩 뽑아올건데 무엇을 리턴할건지만 다른것이다. el % 2 == 0이거면 리턴 아니면 리턴 없음?
// 2로 나눠서 0인것을 뽑아내는것.
-> [2] 하나 출력됨.
List<Integer> collect1 = list.stream().filter(el -> el % 2 == 0)
.map(el -> el * 2) // 이렇게 여러개를 할수도 있다.
.collect(Collectors.toList());
System.out.println(collect1);
최종
package Day8;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
//데이터는 원본 유지하고 새로운걸 만들어야 한다.
//불변성
list.add(1);
list.add(2);
list.add(3);
//만약 list * 2한 데이터를 요구한다면? 아래처럼 하면 된다.
List<Integer> list2 = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
list2.add(list.get(i) * 2);
}
System.out.println(list);
System.out.println(list2);
// 이렇게 쓰는게 불편해서 stream이 나왔다.
//map 길이 같은 리스트를 만드는 것.
List<Integer> collect = list.stream().map(el -> //map(a->)익명함수를 만드는것.
el * 2 // el ->하나씩 꺼내서 보여줌.
).collect(Collectors.toList()); //여기서 다시 배열에 넣어주는 것.
System.out.println(collect); //그래서 배열로 나옴
List<Integer> collect1 = list.stream().filter(el -> el % 2 == 0)
.map(el -> el * 2) // 이렇게 여러개를 할수도 있다.
.collect(Collectors.toList());
System.out.println(collect1);
//filter - 거른다~ el - 하나씩 뽑아올건데 무엇을 리턴할건지만 다른것이다. el % 2 == 0이거면 리턴 아니면 리턴 없음?
// 2로 나눠서 0인것을 뽑아내는것.
}
}
나름대로 열심히 변화 과정을 체크해서 기록하고 복습을 하려고 했으나 아직 기초 지식이 부족해 수업에서 다룬 모듯것을 완벽하게 이해하지 못하고 있다고 생각이 든다. 역량을 키우며 다시 차근 차근 살펴보도록 해야겠다.