Map读取不影响修改删除的方式

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);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/boonya/article/details/80224205