public void setProperty(String k,String v){
//键不重复才往里面加进去
Set<String> set1 = kv.keySet();
for(String s:set1){
if(k.equals(s)){
kv.remove(s);
kv.put(k,v);
return;
}
}
kv.put(k,v);
}
帮忙看一下这个程序,我要达到的目的是相同的键是不能再添加进去了,如果遇到相同的键了,就先把这个映射关系给删了,再添加新的映射关系,为什么这个程序不能实现啊??
//键不重复才往里面加进去
Set<String> set1 = kv.keySet();
for(String s:set1){
if(k.equals(s)){
kv.remove(s);
kv.put(k,v);
return;
}
}
kv.put(k,v);
}
帮忙看一下这个程序,我要达到的目的是相同的键是不能再添加进去了,如果遇到相同的键了,就先把这个映射关系给删了,再添加新的映射关系,为什么这个程序不能实现啊??
Set<String> set1 = kv.keySet();
换成 Set<String> set1 = (Set<String>)(kv.keySet().clone); 试试
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapTest {
Map<String,String> kv = new HashMap<String,String>();
public void setProperty(String k,String v){
//键不重复才往里面加进去
Set<String> set1 = kv.keySet();
for(String s:set1){
if(k.equals(s)){
kv.remove(s);
kv.put(k,v);
return;
}
}
kv.put(k,v);
} public static void main(String[] args){
MapTest mt = new MapTest();
//设置相同的键测试
mt.setProperty("example", "example1");
mt.setProperty("example", "example2");
mt.setProperty("example", "example3");
//设置不同的键测试
mt.setProperty("example4", "example4"); mt.output();
} public void output(){
Set<String> set1 = kv.keySet();
for(String s:set1){
System.out.println(s+","+kv.get(s));
}
}
}