何时在 Java 中使用数组列表?

2022-09-01 04:14:12

在Java中,什么时候使用列表而不是数组会更可取?


答案 1

我认为这个问题恰恰相反——

何时应在列表上使用数组?

只有你有一个具体的理由这样做(例如:项目约束,内存问题(不是一个很好的理由)等)

列表更易于使用(imo),并且具有更多功能。

注意:您还应该考虑像 Set 或其他数据结构这样的东西是否比 List 更适合您尝试执行的操作。

每个数据结构和插拔都有不同的优缺点。选择那些擅长你需要做的事情的人。

如果你需要 get() 是 O(1) 对于任何项目?可能使用 ArrayList,需要 O(1) insert()?可能是一个链接列表。需要 O(1) contains()?可能是哈希集。

TLDR:每个数据结构都擅长某些事情,而在其他方面则很糟糕。查看您的目标并选择最适合给定问题的数据结构。

编辑:

没有注意的一件事是,你最好将变量声明为其接口(即List或Queue),而不是它的实现类。这样,您可以在以后的某个日期更改实现,而无需更改代码中的任何其他内容。

例如:

List<String> myList = new ArrayList<String>(); 

List<String> myList = new LinkedList<String>(); 

请注意,在这两个示例中,myList 都是一个列表。--R·贝姆罗斯


答案 2

经验法则:

  • 将 a 用于引用类型。List
  • 对基元使用数组。
  • 如果必须处理使用数组的 API,则使用数组可能很有用。OTOH,通过使用 s 对类型系统强制实施防御性复制可能很有用。List
  • 如果要对序列执行大量类型操作,并且该序列不在性能/内存关键部分中,请使用 。ListList
  • 低级优化可能使用数组。期待低级优化的恶心。