使用Java Stream API中DistinctBy刪除重複資料
Stream API提供distinct()方法,該方法基於資料Object類的equals()方法返回列表的不同元素。下面先做一個資料Object類,用來發現重複資料:
public class LegacyObject { private final UUID id; private final String foo; private final int bar; public LegacyObject(UUID id, String foo, int bar) { this.id = id; this.foo = foo; this.bar = bar; } @Override public int hashCode() { return Objects.hash(id); } // Implementation of equals() using only the id field // Getters } public class DeduplicateWrapper { private final LegacyObject object; public DeduplicateWrapper(LegacyObject object) { this.object = object; } public LegacyObject getObject() { return object; } @Override public int hashCode() { return Objects.hash(object.getFoo()); } // Implementation of equals() using only the foo field of the wrapped object } |
使用流API重複刪除集合:
List<LegacyObject> duplicates = ...; duplicates.stream() .map(DeduplicateWrapper::new) .distinct() .map(DeduplicateWrapper::getObject); |
不使用Stream的Java8之前程式碼
List<LegacyObject> deduplicated = new ArrayList<>(); Set<DeduplicateWrapper> wrappers = new HashSet<>(); for (LegacyObject duplicate: duplicates) { wrappers.add(new DeduplicateWrapper(duplicate)); } for (DeduplicateWrapper wrapper: wrappers) { deduplicated.add(wrapper.getObject()); } |
如果你足夠幸運能夠使用Kotlin:
val duplicates: List<LegacyObject> = ... duplicates.distinctBy { it.foo } |
相關文章
- sqlserver中刪除重複資料SQLServer
- 刪除重複資料
- PostgreSQL刪除表中重複資料SQL
- mongodb刪除重複資料MongoDB
- mysql 刪除表中重複的資料MySql
- Oracle中刪除表中的重複資料Oracle
- 解析postgresql 刪除重複資料案例SQL
- 如何在不使用Java Collection API的情況下從陣列中刪除重複項JavaAPI陣列
- MS SQL Server 刪除重複行資料SQLServer
- excel刪除重複資料保留一條 如何刪掉重複資料只留一條Excel
- JavaScript刪除字串中重複字元JavaScript字串字元
- ORACLE批量刪除無主鍵重複資料Oracle
- 事件溯源投影模式:重複資料刪除策略 - domaincentric事件模式AI
- 刪除oracle重複值Oracle
- mysql 刪除重複項MySql
- JavaScript 刪除重複字元JavaScript字元
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- 刪除排序陣列中的重複項排序陣列
- MySQL資料庫中刪除重複記錄的方法總結[推薦]MySql資料庫
- oracle刪除重資料方法Oracle
- JavaScript 刪除字串重複字元JavaScript字串字元
- VSCode刪除重複的空行VSCode
- 刪除有序陣列中的重複項 II陣列
- C# 批次刪除Excel中的重複行C#Excel
- 刪除字串中的所有相鄰重複項字串
- ES6刪除字串中重複的元素字串
- 刪除重複id的記錄
- JavaScript 刪除陣列重複元素JavaScript陣列
- Remove Duplicate Letters 刪除重複元素REM
- JavaScript陣列刪除重複元素JavaScript陣列
- c#刪除有序陣列中的重複項C#陣列
- 0026-刪除有序陣列中的重複項陣列
- 題目:刪除排序陣列中的重複項排序陣列
- 牛客(刪除連結串列中重複節點)
- JavaScript陣列刪除重複內容JavaScript陣列
- java .stream(). 使用介紹 Streams APIJavaAPI
- Java8的Stream API使用JavaAPI
- [12][02][26] 刪除排序陣列中的重複項排序陣列