Map操作边遍历边修改是不安全的方式,如何避免呢?只有通过其他结构来处理,将修改和读取分开就OK。
- package com.boonya.map;
-
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Set;
-
- public class MapTest {
-
- private Map<Integer, String> map = new HashMap<Integer, String>();
-
- public void Add(Integer key,String value)
- {
- map.put(key,value);
- }
-
- public void Remove(Integer key)
- {
- if(map.containsKey(key)){
- map.remove(key);
- }
- }
-
- public void ReadMapMethodOne(){
- Set<Integer> set= map.keySet();
- for (Integer in : set) {
- //map.keySet()返回的是所有key的值
- String str = map.get(in);//得到每个key多对用value的值
- System.out.println(in + " " + str);
- }
- }
-
- public void ReadMapMethodTwo(){
- Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry<Integer, String> entry = it.next();
- System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
- }
- }
-
- public void ReadMapMethodThree() {
- Set<Map.Entry<Integer,String>> entrySet=map.entrySet();
- for (Map.Entry<Integer, String> entry :entrySet) {
- //Map.entry<Integer,String> 映射项(键-值对) 有几个方法:用上面的名字entry
- //entry.getKey() ;entry.getValue(); entry.setValue();
- //map.entrySet() 返回此映射中包含的映射关系的 Set视图。
- System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
- }
- }
-
- public void ReadMapMethodFour() {
- for (String value:map.values()){
- System.out.println(" value= " +value);
- }
- }
- }