0

我的问题是如何遍历这个 Map 并根据它们的整数值找到一些两个字符串之间的差异。我知道我的 for 循环中某处需要一个“i”,但我不知道如何实现它。

float getDifference(Map<String, Integer> qualities)
 {
    String myQuality = "";
    String yourQuality = "";
    float answer = 0;
    for(int i = 0; i<qualities.size(); i++)
       {
         answer = qualities.get(myQuality) - qualities.get(yourQuality);
         }
    }
4

4 回答 4

0

仍然不是 100% 清楚你想要做什么,但这里是如何遍历哈希映射:

float getDifference(Map<String, Integer> qualities)
{
    String myQuality = "";
    float answer = 0;
    for(Entry<String, Integer> quality : qualities.entrySet())
    {
         answer += qualities.get(myQuality) - quality.getValue();
    }
    return answer;
}

给我们更多信息(具体示例),我们可以为您提供更多帮助。

于 2013-11-22T03:27:09.177 回答
0

myQuality如果您知道and的值,则不需要循环yourQuality

于 2013-11-22T03:17:35.237 回答
0

这样做不需要循环:

qualities.get(myQuality) - qualities.get(yourQuality)

于 2013-11-22T03:22:10.267 回答
0

如果要查找两个字符串的映射值之间的差异,可以执行以下操作。

float getDifference(Map<String, Integer> qualities, String str1, String str2)
{
  Integer int1 = qualities.get(str1);
  Integer int2 = qualities.get(str2);
  if(int1 != null && int2 != null)
    return int1.intValue() - int2.intValue();

  return -9999;
}

解释

HashMap 存储键值对。整个地图中的钥匙都是独一无二的。我们可以使用 map.get(key) 来获取该键对应的值。

HashMap 只能存储对象,所以我们可以存储 Integer 类的对象。使用 put() 时,编译器会自动将 int 转换为 Integer。但是在取回值时,我们应该检查是否为空。

保留 -9999 或某个值,它可以告诉您您的第一个字符串或第二个字符串作为键不存在于地图中

于 2013-11-22T03:34:18.300 回答