返回信息流看到源码才发现是将Map的value直接转成Collection类的对象,那么为什么可以这么转呢...我的value如果也是Map类型,为什么也可以转成Collection类的呢。菜鸡求助qwq
我的代码:
```java
Map map = new HashMap();
Map value = new HashMap();
value.put(2, "two");
map.put(1, value);
Collection c = map.values();
```
源码:
```java
public Collection<V> values() {
Object var1 = this.values;
if (var1 == null) {
var1 = new HashMap.Values();
this.values = (Collection)var1;
}
return (Collection)var1;
}
```
这是一条镜像帖。来源:北邮人论坛 / java / #65645同步于 2021/7/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于Map类的values()方法使用
yb7858833
2021/7/18镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
debug的时候发现他虽然是个Collection 但是它地址值是hashmap$啥啥的 感觉很奇怪…
【 在 suixin 的大作中提到: 】
: this.values本身是个collection,进源码看看
emm我的意思是 那他实际上上不就是以Map方式存储的吗?用collection怎么存储的了呢…感谢!
【 在 suixin 的大作中提到: 】
: this.values本身是个collection,进源码看看
哦哦哦谢谢谢谢 学傻了我
【 在 suixin 的大作中提到: 】
: collection里存了若干个obj,这个hashmap只是个obj而已,你再塞一个东西进map里,再打断点看c
加上泛型应该好理解些
```java
Map<Integer, Object> map = new HashMap<>();
Map<Object, Object> value = new HashMap<>();
value.put(2, "two");
map.put(1, value);
Collection<Object> c = map.values();
```