簡體   English   中英

優化哈希Java

[英]Optimize Hashing Java

我有大量的大量對象。 每個對象都有一個唯一的ID。 看起來像這樣:

List a = {obj1, obj2, obj3}
List b = {obj3, obj4, obj5}
List c = {obj1, obj2, obj3}
// up to 100 million of them

現在,我想刪除 “列表c”,因為它與“列表a”具有相同的內容以節省內存。

為此,我只是將它們全部添加到哈希圖中,然后檢查鍵是否已存在。 這些對象實際上是大型網絡圖中的引用。 如果只有一個錯誤,則整個應用程序將崩潰。 因為對於不同的對象永遠不會有相同的密鑰非常重要,所以我不使用默認值

List.hashCode()

功能,但改為執行以下操作:

StringBuilder sb = new StringBuilder();
  for ( List list : myList )
    sb.append(list.getId());
return Hashing.sha256().hashString(sb.toString(), Charsets.US_ASCII).toString();

這工作得很好。 只是很慢。 有什么方法可以在更短的時間內達到相同的結果嗎?

使用HashSet以及List的常規hashcodemethods來刪除重復項。 它們的實現與您的想法類似。

所以:

Set<List<String>> uniques = 
    new HashSet<>(Arrays.List<String>asList(a, b, c));  // {a, b}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM