Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- CompletableFuture
- intellij 핵심 단축키
- Stream
- 리눅스
- vue.js
- 백명석님
- Linux
- java
- multipart테스트
- HandlerMethodArgumentResolver
- #docker compose
- 마이크로 서비스
- 자바 ORM 표준 JPA 프로그래밍
- findTopBy
- 자바 ORM 표준 JPA 프로그래밍 정리
- javascript case
- git
- IntelliJ
- @TransactionalEventListener
- Spring Cloud Netflix
- 리팩토링 2판
- aws
- JPA
- ksql
- @Transactional Propagation
- 친절한 SQL 튜닝
- 원격 브랜 삭제
- ksqldb
- intellij favorites
- intellij 즐겨찾기
Archives
- Today
- Total
시그마 삽질==six 시그마
java stream grouping() 후 각 그룹별 특정조건에 따라 한개씩만 추출 본문
List<Person>이 있는데 동일 나이(age)로 그룹핑한 후 각 그룹마다 키가 제일 큰(작은) 한 사람을 추출하고 싶을때
List<Reply> 가 있는데 동일 board_id로 그루핑한후 각 그룹마다 최신(or예전) reply 한개씩만 뽑아내고 싶을때== 각 board_id 마다 최신 댓글 한개씩 추출
ex)
List<Person> list = Arrays.asList(
new Person.Builder().name("김지혜").age(20).height(185).build()
, new Person.Builder().name("이정").age(20).height(181).build()
, new Person.Builder().name("원빈").age(30).height(170).build()
,new Person.Builder().name("정우성").age(30).height(190).build()
);
Map<Integer, Person> collect = list.stream().sorted(Comparator.comparing((Person::getHeight)).reversed())
.collect(Collectors.toMap(Person::getAge, x -> x, (x, y) -> x));
System.out.println("collect = " + collect);
collect = {
20=Person(name=김지혜, age=20, height=185, job=null, carList=null, myPrecious=null),
30=Person(name=정우성, age=30, height=190, job=null, carList=null, myPrecious=null)
}
위 방식은 일단 키를 내림차순으로 해놓고 , age별로 그룹핑하는데 key값인 age가 동일한게 여러개 있으면 그중 첫번째꺼만 가져온다.
그래서 위에는 키가 동일 나이중에 키가 제일 큰 사람을 추출할 수 있는거다
stackoverflow.com/questions/23699371/java-8-distinct-by-property
'프로그래밍 > Java' 카테고리의 다른 글
CompletableFuture (0) | 2020.10.31 |
---|---|
Stream collect 3탄(그룹핑후 매핑 및 집계) (0) | 2020.08.27 |
Stream collect 2탄(그룹핑) (0) | 2020.08.27 |
Stream collect 1탄 (0) | 2020.08.27 |
[mac] java 버전 변경 jenv (0) | 2020.08.18 |
Comments