Tag: 重复删除

Java:优化hashset以进行大规模重复检测

我正在处理一个项目,我正在处理很多推文; 我的目标是在处理它们时删除重复项。 我有推文ID,其格式为”166471306949304320″ 我一直在使用HashSet ,它可以正常工作一段时间。 但到了大约1000万件物品的时候,我已经陷入困境并最终得到GC错误,大概是从重新开始。 我试着定义一个更好的尺寸/负载 tweetids = new HashSet(220000,0.80F); 这让它变得更远,但仍然非常缓慢(大约1000万,它需要花费3倍的时间来处理)。 我该如何优化呢? 鉴于我已经大致知道在结尾集合中应该有多少项目(在这种情况下,大约20-2200万)我应该创建一个只重复两次或三次的HashSet,或者这样的开销是多少?设置了太多的时间罚款? 如果我没有使用String,或者我定义了一个不同的HashCode函数(在这种情况下是String的特定实例,我不知道该怎么做),事情会更好吗? 这部分实现代码如下。 tweetids = new HashSet(220000,0.80F); // in constructor duplicates = 0; … // In loop: For(each tweet) String twid = (String) tweet_twitter_data.get(“id”); // Check that we have not processed this tweet already if (!(tweetids.add(twid))){ duplicates++; continue; } 解 感谢您的推荐,我解决了这个问题。 问题是哈希表示所需的内存量; […]