java从大型数据集中获取重复数据的最佳性能方法是什么?
我有一个大的Set<String>
包含很多单词,比如:
“aaa,cCc,dDD,aaa,bbB,bbB,aaa,cCc,…”强>
我想对集合中的所有重复单词进行分组,忽略单词的大小写敏感度,然后将它们保存在Vector<Vector<String>>
或其他文件中,这样每个Vector<String>
项将包含类似单词的组,如下所示:
Vector<String>
:aaa,aaa,aaa强>
Vector<String>
:cCc,cCc强>
Vector<String>
:bbB,bbB强>
我关心的性能,因为这一套包含许多字
# 1 楼答案
这会在输入集上迭代一次,我怀疑你能得到比这快得多的速度。用
ArrayList
替换LinkedLists
可能会用本地性换取更少的复制,这可能是一种性能提升,但我对此表示怀疑。代码如下:# 2 楼答案
如果你真的关心性能,你就不会使用
Vector
。至于排序问题,一个解决方案是使用TreeMap
或TreeSet
对象并创建一个Comparator
来实现所需的相等(排序)实例化可以是:
用法:
# 3 楼答案
我将创建一个
HashMap<String, Vector<String>> hashMap
。 接下来,对于集合中的每个“字符串”最后,如果需要,创建一个向量向量,或者使用hashmap。值集()
# 4 楼答案
如果可以选择
Set
实现,那么可以使用TreeSet
和Comparator
来比较忽略大小写的字符串。然后,您将能够迭代排序列表并轻松地对重复项进行分组