一、HashMap
1、遍历HashMap的3种方式
HashMap<String,String> map = new HashMap<String, String>();
map.put("1","AA");
map.put("2","BB");
map.put("3","CC");
// 方式1:利用keyset遍历
Set<String> set = map.keySet();
for(String key :set){
System.out.println(map.get(key));
}
// 方式2:利用entrySet
Set<Map.Entry<String,String>> entrySet = map.entrySet();
for(Map.Entry<String,String> entry :entrySet){
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
// 迭代器模式
for(Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();it.hasNext();){
System.out.println(it.next().getKey());
}
// 方式3:利用values
Collection<String> values = map.values();
for(String string :values){
System.out.println(string);
}
2、删除HashMap某个元素
// 错误案例!!!!会发生java.util.ConcurrentModificationException异常(迭代同时发生修改)
// 原因:由于我们在遍历HashMap的元素过程中删除了当前所在元素,下一个待访问的元素的指针也由此丢失了。
for(String key :set){
if("2".equals(key)){
map.remove(key);
System.out.println("已删除:"+map.get(key));
}
}
// ##正确案例##
for(Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();it.hasNext();){
Map.Entry<String, String> item = it.next();//返回当前元素,且游标向下走;;此句不能少,否则,删除当前节点,指针无法找到下一节点
if("2".equals(item.getKey())){//判断为true就删除key键值
System.out.println("删除:"+item.getKey());
it.remove();
}
}