我正在使用两个大数据列表,我需要有效地检查两者之间的匹配。这是场景:
任何想法在效率方面解决这个问题的好方法是什么?很明显,循环使用这么多记录是无效的,而且过程很重。
感谢您的帮助!
更新 值得注意的是,我并没有特别说我需要来使用ArrayList,这只是我用来测试的东西。任何有关更高效收藏的建议都将受到欢迎。
答案 0 :(得分:0)
您可以考虑通过不同的线程部分读取文件。 讨论了类似的问题here。
您可以以块(例如x个字节或一行)处理文本,每个块可以由不同的线程执行,即每个块一个线程。
答案 1 :(得分:0)
如果没有更多详细信息(例如密钥的性质),很难确定,但您可能会发现使用Bloom filter非常有用,可以最大程度地减少您执行check within an ArrayList of strings whether it has a match
的次数。
显然,如果查找列表随时间变化,这将无济于事。
在搜索列表之前,您可以使用Bloom过滤器进行预检查,因为如果列表中不存在该键,它可以非常快速地给您一个no
个答案。如果布隆过滤器显示maybe
,您仍需要搜索列表。
答案 2 :(得分:0)
你应该使用HashMap大约是O(1),或者你的字符串有很多冲突而不是你需要使用TreeSet O(logN)或Bloom过滤器。