在Map中减少For循环

时间:2014-11-13 11:31:26

标签: java map

这是我的代码:

package vvv;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class test {

public static void main(String args[]){
    Map<Integer, String> map = new HashMap<Integer, String>();
    map.put(1, "demo");
    map.put(20, "fdemo");
    map.put(60, "gdemo");
    map.put(500, "udemo");
    map.put(8000, "odemo");
    // etc
    int b = 7999;
    for(int i =1; i<=8000; i++)
    {
        if(i == b)
            System.out.println(map.get(b));
    }

}

}

我不想使用大型的#34; for循环&#34;只是为了从地图中找到结果,此外,我无法更改地图中的某个键(例如,我无法将500更改为4)。

我该怎么做才能减少循环条件?

4 个答案:

答案 0 :(得分:5)

这将迭代Map中的所有键:

for (Integer key : map.keySet()) {
    ...
}

但是,我没有在循环中看到这一点,因为你只为特定的键(7999)做了一些事情,所以你的循环可以简化为:

System.out.println(map.get(b));

使用单一方法无法更改密钥。您必须先删除旧密钥,然后使用相同的值插入新密钥。

if (map.containsKey(500))
    map.put(4,map.remove(500));

答案 1 :(得分:0)

for (Map.Entry<Integer, String> entry : map.entrySet()) {
    Integer key = entry.getKey();
    if(b==key);
        println entry.getValue();
}

答案 2 :(得分:0)

使用:

for (Integer theKey : map.keySet()) {
    String val=map.get(thekey);
    ....
}

如果您只是想检查某个密钥是否存在,您甚至不需要循环,请使用map.containKey(some_key)

您可能需要注意,如果您的密钥是您的客户类而不是原始类型,则需要覆盖equals()hashCode()方法,否则会发生不好的事情。

答案 3 :(得分:0)

尝试以下代码,它可以正常工作。无需迭代地图,只需使用map.conytainsKey(key)方法。

{
  String tempString=null;
  tempString=((map.containsKey(b)?map.get(b):" "));
  System.out.println(tempString);
}

或者您也可以这样写

{

  System.out.println((map.containsKey(b)?map.get(b):" "));
}