java의 Stream API를 공부하며 느낀 공부해야 할 것들
- Lambda 식을 활용한 코드 사용법
- Collection Interface의 stream methods 사용법
- 위에서 플러스로 객체의 type에 따른 stream methods들의 적절한 활용법
공부하며 느낀 점:
sql에서 data를 다루어 시각적 정보를 얻는 것 처럼 java라는 언어로 그 안에 있는 Collection을 다루는 것 같다.
java는 타입과 Collection의 구조..? 등 신경써야 할 것, 제한..등 수행하는 것이 더 어렵게 느껴진다.
구분한 것
- filter(), forEach()와 map()의 기능적 차이
- filter() : 말 그대로 필터 역활, (==, !=, >)를 사용하여 조건이나 한계점을 정할 때 사용. &&이나 | 사용 가능
- forEach() : 여러 객체를 받았을때 한 개씩 받아와 동작을 실행 시킬 수 있다. for()과 비슷, 반환값이 없어도 된다. - void
- map() : mapToInt() 등 비슷하면서 세부적으로 다른 메소드가 여럿 있다. forEach()와 비슷하지만 반환 값이 있어야 한다. 객체를 받아온 객체 안에 특정 변수로 변경할 때 유용하다.
ex) peopleList.map(p -> p.getName()) : peopleList 안에 People을 받아 이름을 반환한다.
의문점
- stream()쓰고 한것과 안 쓴것의 차이, 메소드마다 요구하는 것이 다르고, 반환되는 값의 차이를 정확히는 모르겠지만 map()과 collect() 등은 stream()을 필요시 한다.
- collect()의 정확한 기능
- collect() 안에서 groupingBy, joining 등 기능과 사용법
- max(), min() 구하기 (어떤 상황에서는 비교 parameter를 요구하고 또는 orElse()로 넘어간다.)
좀 더 잘하고 싶은 것
- 의문점들 확실히 알기
- 코드를 한 줄로 구현하기 (그치만 먼저는 해결!!)
- 중복이나 필요없는 코드 및 동작 삭제하기
- 변수 대입 안하고 구하기
stream에 관련된 API 문서
https://docs.oracle.com/javase/8/docs/api/index.html
-> java.util.stream