java8 通過排序分組去重(保留最新的資料)
阿新 • • 發佈:2021-01-27
技術標籤:Javajava::java::多個java8去重java8多個::java8分組去重最新
private List<GenErrQsTask> getDistinctList(List<GenErrQsTask> genErrQsTaskListList) { List<GenErrQsTask> newList = new ArrayList<>(); Map<String, List<GenErrQsTask>> map = //按照createDate排序 reversed()是反轉,升序變為降序,也就是說把最新的資料放到list首 genErrQsTaskListList.stream().sorted(Comparator.comparing(GenErrQsTask::getCreateDate).reversed()) // 正常是用::符號就可以 但是我這個物件比較特殊有三層的屬性所以這麼寫了 .collect(Collectors.groupingBy(genErrQsTask -> genErrQsTask.getExamPaper().getPaperId())); for (Map.Entry<String, List<GenErrQsTask>> entry : map.entrySet()) { if (ListUtils.isNotEmpty(entry.getValue())) //取list首並放入到新list中 newList.add(entry.getValue().get(0)); } return newList; }
先排序後分組