使用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
- 刪除重複資料
- Oracle中刪除重複資料的SqlOracleSQL
- mysql 刪除表中重複的資料MySql
- mongodb刪除重複資料MongoDB
- MySQL刪除重複資料MySql
- 刪除表裡重複資料
- oracle 查詢及刪除表中重複資料Oracle
- mysql 查詢及 刪除表中重複資料MySql
- 解析postgresql 刪除重複資料案例SQL
- 重複資料刪除:備份中的“消重加速器”
- 如何在不使用Java Collection API的情況下從陣列中刪除重複項JavaAPI陣列
- SQL Server中刪除重複資料的幾個方法SQLServer
- Oracle查詢重複資料與刪除重複記錄Oracle
- MS SQL Server 刪除重複行資料SQLServer
- T-SQL 刪除重複資料SQLSQL
- 海量資料處理_刪除重複行
- 根據rowid刪除重複資料
- 通過ROWID刪除重複資料
- excel刪除重複資料保留一條 如何刪掉重複資料只留一條Excel
- mysql查詢表裡的重複資料方法和刪除重複資料MySql
- Oracle查詢重複資料與刪除重複記錄方法Oracle
- JavaScript刪除字串中重複字元JavaScript字串字元
- ORACLE批量刪除無主鍵重複資料Oracle
- Python 字串,list排序,刪除重複資料Python字串排序
- Mongodb 刪除重複資料的幾個方法MongoDB
- oracle重複資料的查詢及刪除Oracle
- oracle 刪除重複資料的幾種方法Oracle
- Oracle 刪除重複資料只留一條Oracle
- 刪除重複資料的幾個方法(轉)
- Java刪除ArrayList中的重複元素的2種方法Java
- JavaScript刪除字串中重複的字元JavaScript字串字元
- 如何刪除ArrayList中的重複元素
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- SQL刪除重複資料,只保留一行SQL
- NetApp FAS Filer的重複資料刪除APP
- T-SQL技術收集——刪除重複資料SQL