简单地说,在keyset方法返回的set上做修改会改变原来的hashmap,这也许不是你想要的,于是形成一个隐藏的bug
一个简单的例子
//a simple demo import java.util.HashMap; import java.util.Set; public class TestHashMap { public static void main(String[] args) { HashMap<Integer, Integer> G = new HashMap<Integer,Integer>(); G.put(1, 1); G.put(2, 4); G.put(3, 9); G.put(4, 16); Set<Integer> set = G.keySet(); set.remove(3); System.out.println(G.size());//print 3 } }