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

Java入参List<List<Integer>> nums是LinkedList还是ArrayList实例?

Java List实现类判断方案及LeetCode入参说明

针对你提到的LeetCode题目smallestRange中List<List<Integer>>类型入参的疑问,具体解答如下:

1. LeetCode场景下无需担心

LeetCode所有Java题目的List类型入参,官方构造测试用例时默认采用ArrayList实现,不会传入LinkedList,你可以直接放心使用nums.get(i)方法,时间复杂度稳定为O(1)。

2. 通用场景下判断List实现类型的方案

如果是在业务开发等通用场景,需要兼容任意List实现,有两种常用判断方式:

  • 直接判断具体类型:用instanceof关键字校验实例所属类
    if (nums instanceof ArrayList) {
        // 是ArrayList实现,随机访问O(1)
    } else if (nums instanceof LinkedList) {
        // 是LinkedList实现,随机访问O(n)
    }
    
  • 更通用的随机访问能力校验:判断是否实现RandomAccess标记接口
    ArrayList实现了RandomAccess接口用来标记它支持O(1)时间复杂度的随机访问,LinkedList没有实现该接口,这种方式可以兼容其他自定义List实现类,比判断具体子类更合理:
    if (nums instanceof RandomAccess) {
        // 支持高效随机访问
    } else {
        // 随机访问效率低,建议先转换为ArrayList再操作
    }
    

3. 兼容方案

如果确实无法确定传入的List类型,又需要频繁调用get(i)方法,可以先做一次转换,后续所有操作都用转换后的ArrayList:

// 一次O(n)转换,避免后续每次get都O(n)
List<List<Integer>> arrayNums = new ArrayList<>(nums);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:39:05