List<PositionDetailPenetrateVO> collect1 = maps.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(e -> e.getRptDt() + " " + e.getScrId()))), ArrayList::new));
List<PositionDetailPenetrateVO> collect2 = maps.stream().collect(Collectors.toMap(e -> e.getRptDt() + " " + e.getScrId(), e -> e, (existing, replacement) -> existing))
.values()
.stream()
.collect(Collectors.toList());