【发布时间】:2021-11-14 18:06:30
【问题描述】:
LinkedList 和 ArrayList 都建立在 List 接口之上,而 LinkedList 使用传统的指针技术来构建列表,ArrayList 使用数组来实现 List 功能。那么在使用数字之前可以声明什么是在屏幕后面使用ArrayList 或LinkedList?
我是怎么得到这个问题的?
public int[] smallestRange(List<List<Integer>> nums) {
}
}
大多数 Leetcode Java 问题都有这种格式的输入。在不知道如何实例化 nums 的情况下,有人如何使用 nums.get(i) 函数(list.get(i) 在 ArrayList 中为 O(1),在 linkedList 中为 O(n))
【问题讨论】:
-
没有一个,
List是一个接口,你不能(不应该)假设内部表示(当然你可以在运行时检查但不应该)。如果您需要快速实现,请创建自己的受限接口/类或直接编写smallestRange(ArrayList<...> ...)。 -
这是避免
list.get(int)而是使用迭代器的一个很好的理由。
标签: java generics arraylist collections linked-list