我目前正在使用两个for循环来比较所有条目,但是我得到了重复的比较。由于HashMaps没有排序,我无法弄清楚如何消除已经进行过的比较。例如,我有这样的东西:
for(Entry<String, String> e1: map.entrySet())
{
for(Entry<String, String> e2: map.entrySet())
{
if (e1.getKey() != e2.getKey())
{
//compare e1.getValue() to e2.getValue()
}
}
}
这样做的问题在于,第一个条目将与第二个条目进行比较,然后是第三个条目等等。但是接着第二个条目将再次与第一个条目进行比较等等。然后第三个条目将和第一个、第二个、第四个条目进行比较等等。有没有更好的方法遍历HashMap以避免重复比较?
额外信息:
更具体地说,我使用的HashMap存储文件名(键)和文件内容(值) - 仅为文本文件。 HashMap已经通过遍历包含要比较的文件的目录来填充。 然后我正在对文件对运行一些算法,以确定每对文件之间的相似度。 我不需要将文件1与文件2进行比较,然后再将文件2与文件1进行比较,因为我只需要比较2个文件一次。 但我确实需要每个文件与其他每个文件进行比较一次。 我刚开始使用HashMap。 agim下面的答案可能适用于我的目的。 但我也会尝试理解Evgeniy Dorofeev和Peter Lawrey的解决方案。 希望这有助于更好地解释事情。