我目前正在使用 2 个 for 循环来比较所有条目,但我得到了重复的比较。因为 HashMap 没有排序,所以我不知道如何消除已经进行的比较。例如,我有类似的东西:
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()
}
}
}
这样做的问题是第一个条目将与第二个条目进行比较,然后是第三个条目,依此类推。但随后将再次将第二个条目与第一个条目进行比较,依此类推。然后将第三个条目与第一个条目进行比较,然后是第二个条目,然后是第四个条目,等等。有没有更好的方法来遍历 HashMaps 以避免重复比较?
附加信息:
更具体地说,希望能回答您的问题,我拥有的 HashMap 存储文件名(键)和文件内容(值) - 只是文本文件。HashMap 已通过遍历包含我要比较的文件的目录来填充。然后我正在做的是通过一些算法运行成对的文件来确定每对文件之间的相似性。我不需要将文件 1 与文件 2 进行比较,然后再将文件 2 与文件 1 进行比较,因为我只需要将这 2 个文件进行一次比较。但我确实需要将每个文件与其他文件进行一次比较。我是使用 HashMaps 的新手。下面的 agim 答案可能只适用于我的目的。但我也将尝试围绕以下 Evgeniy Dorofeev 和 Peter Lawrey 的解决方案展开思考。我希望这有助于更好地解释事情。