[英]Java: Comparing two collections for new or updated objects
我有兩個集合或數組列表,它們的大小可能不相等,需要進行比較。 一個集合是從REST負載中新下載的對象集合。 另一個是來自對象集合本地存儲庫的集合。 兩個集合都不會有重復的對象。
這個想法是要找到本地存儲庫中不存在的新對象,或者從本地存儲庫中的現有對象中找到已下載集合中已更新的對象。 因此,該類最終將具有兩個方法來返回新對象和更新對象的Collection
對象的簽名包括:
membershipObject:
id
start_date
end_date
uniqueId
id
和uniqueId
在集合中是唯一的,因此非常適合進行比較。 start_date
通常不會更改,但是end_date
可以為null或具有datetime對象。 我有一種支持方法,根據end_date
是否為null
來確定對象是“活動”還是“非活動”。
如果自上次下載以來end_date
已更改,則認為對象已更新。
例如:
downloadedCollection
0:
id: 1
start_date: 2017-05-01 00:00:00
end_date: null
uniqueId: <unique-string-abc>
1:
id: 2
start_date: 2017-04-01 00:00:00
end_date: 2017-05-02 00:00:00
uniqueId: <unique-string-cde>
2:
id: 3
start_date: 2017-05-01 10:00:00
end_date: null
uniqueId: <unique-string-def>
localCollection
0:
id: 1
start_date: 2017-05-01 00:00:00
end_date: null
uniqueId: <unique-string-abc>
1:
id: 2
start_date: 2017-04-01 00:00:00
end_date: null
uniqueId: <unique-string-cde>
在上面的示例中, id 2
已更新,而id 3
是downloadedCollection
新值。
考慮到操作的復雜性,比較這兩個集合的理想Java方法是什么? Java SDK 7。
讓哈希表維護本地可用的id(key)和到期信息(值)。 每當您收到新的Valve時,都會在它們之間循環並更新您的存儲庫和哈希表。 這將運行O(n),其中n是新列表中的noof項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.