偶在一个网站上看到一句话:当对Map进行修改操作后,entrySet()函数都会被调用。所以对Map的修改也会产生对这个Set的修改。不知是什么意思?哪位高人写个代码出来记DD弄个明白呀(关键是怎样体现第二句话)?先谢了..

解决方案 »

  1.   

    import java.util.*;
    public class A { /**
     * @param args
     */
    public static void main(String[] args) {
    Map<String,String> map = new HashMap<String,String>();
    map.put("a","aa");
    map.put("b","bb");

    Set set = map.entrySet();
    System.out.println(set);

    map.remove("a");
    //未调用entrySet,下面的输出结果已经变了
    System.out.println(set);
    }}
      

  2.   

    believefym(feng) 讲得没错,而且api中也有一句话:The set is backed by the map, so changes to the map are reflected in the set, and vice-versa.
    其中believefym(feng)说的是通过map改变set,而以下就是通过SET 改变MAP(两者关联)import java.util.*;
    public class A { /**
     * @param args
     */
    public static void main(String[] args) {
    Map map = new HashMap();
    map.put("a","aa");
    map.put("b","bb");

    Set set = map.entrySet();
    System.out.println(set); Iterator it=set.iterator();
    it.next();
    it.remove();
    //未调用entrySet,下面的输出结果已经变了
    //set=map.entrySet();
    System.out.println(map);
    }}
      

  3.   

    entrySet()就是对map的key list的引用,对map的修改马上能反应到entrySet上.
    你不用重新去再申明一次.