You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将List转为Queue并调用poll()后,原List的大小会减少吗?

问题

假设我有如下ArrayList:

List<Integer> list = [1,2,3,4]; // 忽略此处语法

随后将该集合转换为队列:

Queue<Integer> queue = new LinkedList(list);

接着执行:

queue.poll(); // 从队列中移除元素

仅因两者引用同一Integer集合,原List的大小也会减少吗?我原本以为调用queue.poll()后,list.size()会变小,但实际并非如此,这是否意味着队列和列表在内存中是不同的数据集?

回答

这是因为LinkedList(Collection<? extends E> c)构造方法会复制传入集合中的所有元素,创建一个全新的LinkedList实例——它和原ArrayList是完全独立的两个集合对象,内存中存储的是各自的数据集。

  • 原ArrayList的元素和LinkedList中的元素虽然是同一个Integer对象(Integer是不可变类型,小数值会复用缓存),但两个集合本身是独立的容器,各自维护自己的元素引用列表。
  • 调用queue.poll()只会修改LinkedList内部的元素引用结构,不会对原ArrayList产生任何影响,所以原List的大小不会变化。

内容的提问来源于stack exchange,提问作者user9341578

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 20:12:04