【问题标题】:Issues with iterating the HashMap in Android在 Android 中迭代 HashMap 的问题
【发布时间】:2013-08-02 13:49:44
【问题描述】:

我是 Android 开发新手,我需要一个提示来找到解决问题的方法。

我有一个HashMap,其中包括一些频率为keys,幅度为values

private Map<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
hashMap.put(20, 32767);
hashMap.put(32, 32767);
hashMap.put(64, 32767);
hashMap.put(125, 6000); 

我希望系统迭代这个 hashmap,每次它都应该根据频率和幅度生成音调,并询问用户是否听到了这个音调。如果是,那么我们移动到哈希图的下一个条目,如果不是,那么我们增加幅度并使用增加的幅度再次生成音调,并再次询问用户相同的问题。

我创建了一个迭代哈希映射条目的 for 循环,还使用了 Iterator,但问题是它显示了第一次迭代的所有警报。

有人可以帮忙吗?

编辑:

这是迭代代码:

for (Map.Entry<Integer,Integer> entry : hashMap.entrySet()) {
    freqOfTone = entry.getKey();
    amplitude = entry.getValue();
    startCalibration();
}

【问题讨论】:

  • 显示你的迭代代码。而且,我不确定你是否想要一个哈希图。你可能想要一个Pair 类或类似的东西。
  • 喜欢Keyser请提供代码
  • 迭代看起来不错.. 预期的行为是什么?
  • “但问题是它显示了第一次迭代的所有警报” 这没有任何意义。第一次迭代是什么?你的意思是在发布循环的第一次迭代中?
  • 在 startCalibration() 方法中,它应该生成提示音,并显示警告询问用户是否听到提示音。如果是,那么我们将正常继续下一个条目,如果不是,则我们修改幅度并再次调用 startCalibration()。发生的事情是,一旦执行 for 循环,它就会显示哈希图中所有条目的所有警报。如果你愿意,我可以为你提供所有代码。

标签: java android hashmap


【解决方案1】:

大概你想用这样的东西?

for(int key:hashMap.keySet())
{
    int val = hashMap.get(key)-1;
    do
    {
        val++;
        //Play sound    
    }while(!didYouHereItDialog());
    hashMap.put(key,val);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    相关资源
    最近更新 更多