Java 8 람다 함수는 속성 값을 기반으로 목록 중복 제거를 구현합니다.

프로젝트에서 java8을 사용하는 경우 목록의 특정 속성 값에 따라 중복 제거를 처리하는 매우 간단한 방법이 있습니다. 바로 람바 함수를 사용하는 것입니다. 예제 코드는 다음과 같습니다.
List<UcShopCourseBizPojo> unique = ucShopCourseBizPojoList.stream().collect(
collectingAndThen(
toCollection(() -> new TreeSet<>(comparingLong(UcShopCourseBizPojo::getId))), ArrayList::new));
compareLong 메소드는 pojo 클래스 UcShopCourseBizPojo에서 id에 따라 중복이 제거되고 id 속성의 데이터 유형이 Long이기 때문입니다. 이 방법은 보다 일반적인 방법으로 대체할 수 있습니다. 예제 코드는 다음과 같습니다.
List<UcShopCourseBizPojo> sLists = shopCourseLists.stream().collect(
Collectors.collectingAndThen(Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(c -> c.getShopId()))), ArrayList::new)
);
그러나 가중치를 필터링하는 이 방법은 매장 과정 목록을 얻고 동일한 shopid를 가진 과정을 중복 제거하는 등 획득한 목록이 매번 임의의 결과를 반환할 수 있다는 단점이 있습니다. 두 코스의 shopid가 같으면 매번 호출될 수 있습니다. 때때로 나는 이 코스로 돌아갈 것이고, 다른 코스로 돌아올 것이다. 근본적인 원인이 무엇인지 모르겠습니다. 이 방법은 참고용입니다. 이유를 아시는 분은 쪽지 남겨주세요~