将map中的value赋值给list,list改变为什么会引起map也变呢?

yiming_686 2017-12-02 01:51:44

Map<Integer, List<Integer>> map1 = new HashMap<>();
List<Integer> list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
for (int i = 1; i < 6; i++) {
list1.add(i);
}
for (int k = 1; k < 6; k++) {
map1.put(k, list1);
}
System.out.println(map1);
list2 = map1.get(1);
list2.remove(0);
System.out.println(map1);


结果是这样的:



为什么会这样呢?
...全文
1172 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
MubaiClink 2017-12-05
  • 打赏
  • 举报
回复
兄弟!他们看不起你,我看得起你!你传递的是引用地址,所以会变。
  • 打赏
  • 举报
回复
JAVA 的集合里面存的都是 对象的引用
大碗2512 2017-12-05
  • 打赏
  • 举报
回复
java基本类型(boolean、byte、short、int、long、char、float、double)采用的是值传递,封装类型是引用传递
开发小记 2017-12-04
  • 打赏
  • 举报
回复
引用 3 楼 shangjianli 的回复:
你把你的银行卡和密码给我,过两天我再还给你,你觉得你的卡里的钱会不会变呢
666 那要看你心情~
Sunyiban 2017-12-04
  • 打赏
  • 举报
回复
可以看看JAVA的值传递和引用传递
qq_24604507 2017-12-03
  • 打赏
  • 举报
回复
可以研究一下对象的内存分配
java小白脸 2017-12-02
  • 打赏
  • 举报
回复
穿的是引用地址
戎码一生灬 2017-12-02
  • 打赏
  • 举报
回复
你把你的银行卡和密码给我,过两天我再还给你,你觉得你的卡里的钱会不会变呢
yiming_686 2017-12-02
  • 打赏
  • 举报
回复
map的get方法传的是value的内存地址吗?
李德胜1995 2017-12-02
  • 打赏
  • 举报
回复
不变就怪了。。。。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧