这是我的代码:
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)。
我该怎么做才能减少循环条件?
答案 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):" "));
}