일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바Comparable
- 자바스크립트map
- 자바foreach
- 도둑질자바
- 스프링핵심요소
- webrtc
- 자바Comparator
- 객체지향solid
- 자바배열정렬
- 자바리스트정렬
- node의존성주입
- 자바reduce
- 프로그래머스도둑질
- 객체지향추상화
- 자바스크립트foreach
- 자바 가비지컬렉션
- 자바filter
- 자바스크립트filter
- 프로그래머스가장큰수
- 자바스크립트reduce
- 프로젝트회고
- 팀프로젝트
- Programmers가장큰수
- Programmers도둑질
- 객체지향다형성
- 우선순위큐자바
- openvidu
- 자바stream
- 클라우드타입
- 모놀리틱 아키텍처
- Today
- Total
I'm pine thank you and you?
[JAVA, JS] map, filter, reduce, forEach 본문
map
매개변수가 1개이고 return을 하는 함수를 매개변수로 받아서 배열의 모든 요소를 매개변수로 대입해서 그 결과를 가지고 배열로 return
배열에 어떤 연산을 가해서 새로운 배열을 만들고자 할 때 사용한다.
- 자바스크립트에서 써보기
var ar = [10, 20, 30, 40, 50, 60];
// map
// ar의 모든 원소에 10을 곱해서 배열로 리턴한다.
var result_ar = ar.map((e) => {
return e * 10
})
console.log(result_ar);
- 자바에서 써보기
자바에서는 Stream 인터페이스에서 map() 함수를 지원한다.
따라서 리스트를 stream화 시킨 다음에 해당 함수를 쓸 수 있다.
ArrayList<String> list = new ArrayList<>(Arrays.asList("a", "b", "c", "d"));
// map
// 리스트의 모든 원소를 대문자로 바꿔서 리턴
Stream<String> result_list = list.stream().map((e) -> e.toUpperCase());
result_list.forEach(System.out::println);
- forEach
배열이나 리스트 탐색 기법
반복문 내에 카운터 변수, 콜론(:), 배열이름을 순서대로 선언한다.
카운터 변수가 배열의 원소를 차례로 순회하는 반복문이다.
하지만, 배열을 역순으로 탐색할 수 없다는 단점이 있다.
filter
매개변수가 1개이고 Boolean을 return 하는 함수를 매개변수로 받아서 배열의 모든 요소를 매개변수로 대입해서 함수를 호출한 후 true를 return한 데이터만 모아서 배열로 리턴
조건에 맞는 것만 필터링 하기 위해 쓴다.
- 자바스크립트에서 써보기
// filter
// 특정 문자 포함 문자열만 필터링하기
var search_ar = ["korea", "area", "earth", "japan", "africa"];
var result_ar = search_ar.filter((e) => {
return e.indexOf("ea") >= 0
})
console.log(result_ar);
- 자바에서 써보기
자바에서는 Stream 인터페이스에서 filter() 함수를 지원한다.
따라서 리스트를 stream화 시킨 다음에 해당 함수를 쓸 수 있다.
ArrayList<String> list = new ArrayList<>(Arrays.asList("cabinet", "banana", "character", "chip", "apple"));
// filter
// c로 시작하는 단어만 필터링하기
Stream<String> result_list = list.stream().filter((e) -> e.substring(0, 1).equals("c"));
result_list.forEach(System.out::println);
reduce
배열을 순회하면서 연산(함수)을 수행한 후 하나의 값을 리턴
배열의 요소들을 하나의 데이터로 만드는 작업
- 자바스크립트에서 써보기
var ar = [10, 20, 30, 40, 50, 60];
// reduce
// 10+20=30, 30+30=60, 60+40=100, 100+50=150, 150+60=210
ar.reduce((a, b) => a + b)
- 자바에서 써보기
자바에서는 Stream 인터페이스에서 reduce()함수를 지원한다.
따라서 리스트를 stream화 시킨 다음에 해당 함수를 쓸수 있다.
자바 reduce는 3개의 매개변수를 받는다.
- T identity: 계산에 적용할 초깃값으로, 스트림이 비어 있더라도 초깃값을 반환
- BinaryOperator<T> accumulator: 적용할 연산 함수
- `(accumulate, n) -> accumulate + n` 형태로 쓰이며 accumulate에는 누적값이 들어간다.
- BinaryOperator<U> combiner: 병렬 스트림에서 각 스레드 계산 결과를 합치는 함수
자바 reduce는 Optional 객체를 반환한다.
ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
// reduce
// 리스트의 값을 모두 더한 값을 반환
Optional<Integer> result_list = list.stream().reduce((a, b) -> a + b);
System.out.println(result_list);
'CS' 카테고리의 다른 글
[DB] Redis 개념, 특징 (0) | 2023.03.22 |
---|---|
WebRTC가 무엇일까? (용어, 샘플, openvidu) (0) | 2023.03.04 |
[아키텍처] MSA / 멀티모듈 단일프로젝트? 단일모듈 멀티프로젝트? (0) | 2023.02.12 |
[디자인 패턴, JAVA] Singleton Pattern(싱글톤 패턴) 정의, 목적, 용도 (0) | 2023.02.09 |
[클라우드 컴퓨팅] IaaS, PaaS, SaaS (0) | 2023.02.06 |