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

自定义LinkedList构造器:ArrayList转链表出现数据错误,求排查

问题排查与修复

你的代码问题出在循环的起始索引和执行次数上:

问题分析

你已经手动创建了head节点,对应ArrayList的第一个元素(list.get(0)),但后续循环又从i=0开始,导致第一个元素被重复添加;同时循环执行了list.size()次,最终生成的节点数量会比原列表多1个,这就是测试时得到[1, 1, 2]而不是[1, 2, 3]的原因。

修复后的代码

public LinkedList(ArrayList<E> list) {
    head = null;
    size = 0;
    if (list != null && !list.isEmpty()) {
        // 初始化头节点为第一个元素
        head = new Node<E>(list.get(0));
        Node<E> current = head;
        // 从第二个元素开始遍历(i=1),直到列表末尾
        for (int i = 1; i < list.size(); i++) {
            current.next = new Node<E>(list.get(i));
            current = current.next;
        }
        size = list.size();
    }
}

关键修改点

  • 循环起始索引从i=0改为i=1:跳过已经作为头节点的第一个元素,避免重复
  • 循环次数自动变为list.size()-1次:保证最终节点数量和原ArrayList的元素数量一致

测试时,传入[1,2,3]会生成正确的链表1->2->3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:03:23