关注
示例代码 public class Main {
public static void main(String[] args){
Map<String,Object> map = new HashMap<>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
Collection<Object> values = map.values();
System.out.println(values);
}
} 通过debug发现,调用 map.values() 时进入了HashMap的方法 public Collection<V> values() {
Collection<V> vs = values; if (vs == null) {
vs = new Values(); values = vs;
} return vs;
} 第一次执行时,values为null,会进行创建 final class Values extends AbstractCollection<V> {
public final int size() { return size; }
public final void clear() { HashMap.this.clear(); }
public final Iterator<V> iterator() { return new ValueIterator(); }
public final boolean contains(Object o) { return containsValue(o); }
public final Spliterator<V> spliterator() {
return new ValueSpliterator<>(HashMap.this, 0, -1, 0, 0);
}
public final void forEach(Consumer<? super V> action) {
Node<K,V>[] tab;
if (action == null)
throw new NullPointerException();
if (size > 0 && (tab = table) != null) {
int mc = modCount;
for (int i = 0; i < tab.length; ++i) {
for (Node<K,V> e = tab[i]; e != null; e = e.next)
action.accept(e.value);
}
if (modCount != mc)
throw new ConcurrentModificationException();
}
}
} vs = new Values(); 执行过后vs就有值了,一直没想明白,卡在这里了。
查看原帖
3 5
相关推荐
牛客热帖
更多
正在热议
更多
# 秋招落幕,你是He or Be #
1590次浏览 51人参与
# 应届生进小公司有什么影响吗 #
108521次浏览 1108人参与
# 重来一次,你会对开始求职的自己说 #
1984次浏览 52人参与
# 你面试体验感最差/最好的公司 #
1335次浏览 39人参与
# 一人说一个提前实习的好处 #
2264次浏览 40人参与
# 团建是“福利”还是是 “渡劫” #
3185次浏览 79人参与
# 实习没事做是福还是祸? #
6539次浏览 112人参与
# 工作中听到最受打击的一句话 #
1478次浏览 22人参与
# 你小心翼翼的闯过多大的祸? #
5889次浏览 100人参与
# 联影求职进展汇总 #
123685次浏览 781人参与
# 今年你最想重开的一场面试是? #
1046次浏览 19人参与
# 大厂VS公务员你怎么选 #
69933次浏览 647人参与
# OPPO求职进展汇总 #
755690次浏览 5390人参与
# 今年形式下双非本找得到工作吗 #
266138次浏览 1541人参与
# 公司情报交流地 #
127329次浏览 1233人参与
# 在牛客分享我的求职旅程 #
176901次浏览 2689人参与
# 实习简历求拷打 #
27117次浏览 273人参与
# lastday知无不言 #
101224次浏览 641人参与
# 实习生活中那些难忘的瞬间 #
279379次浏览 3108人参与
# 从顶到拉给所有面过的公司评分 #
144623次浏览 518人参与


