【发布时间】:2010-05-13 12:54:45
【问题描述】:
请告诉我比较大量值的最快捷有效的方法。就像有一个父代码(字符串)列表,每个代码都有一系列子值(字符串)。子列表必须相互比较,找出重复项并计算它们重复的次数。
code1(code1_value1, code1_value2, code3_value3, ..., code1_valueN);
code2(code2_value1, code1_value2, code2_value3, ..., code2_valueN);
code3(code2_value1, code3_value2, code3_value3, ..., code3_valueN);
.
.
.
codeN(codeN_value1, codeN_value2, codeN_value3, ..., codeN_valueN);
列表很大,比如有 100 个父代码,每个代码中都有大约 250 个值。代码列表中不会有重复项。用java做,我能想到的解决方案是。
- 将第一组代码的值存储为
codeMap.put(codeValue, duplicateCount)。计数初始化为 0。 - 然后将其余值与此进行比较。如果它在地图中,则增加计数,否则将其附加到地图中。
这样做的缺点是获取重复项。需要对一个非常大的列表执行另一次迭代。
另一种方法是为 duplicateCodeMap.put(codeValue, duplicateCount) 等重复项维护另一个 hashmap,并将初始 hashmap 更改为 codeMap.put(codeValue, codeValue)。
速度就是要求。希望你们中的一个可以帮助我。
【问题讨论】:
标签: java performance arrays comparison