使用数组还是List<>更好?

19 浏览
0 Comments

使用数组还是List<>更好?

这个问题已经有了答案

数组与列表: 何时使用哪种?

我在想哪种类型的性能更好,你认为应该使用哪种。

例如,我有一个字符串列表,不知道需要多少项,所以拥有 .Add(String) 函数非常方便。我可以随时轻松地添加新字符串到列表中。

使用每个的优缺点是什么?

列表是否是新的数组?

admin 更改状态以发布 2023年5月20日
0
0 Comments

List 使用一个数组 String[] 实现。

如果您不知道将会有多少元素,请使用 List

您可以在容量构造函数参数中提供预估(或最大)元素数量(new List(10)),这将是底层数组的初始大小。

当您添加一个项目并且没有足够的空间来存放此项目时,底层数组将被复制到一个两倍大小的新数组中。

我的做法是:当我知道集合的确切大小且我知道我不会更改集合的大小时,我使用数组(String[]);否则我使用 List

顺便说一下,这适用于任何类型,而不仅仅是 String

0
0 Comments

要正确回答这个问题,需要更多的上下文:

公共API中,应该尽量使用抽象的集合类型,以便日后需要时可以更改内部实现。

  • 如果集合不应该由外界更改,请使用IEnumerable
  • 如果集合将被外界更改,请使用ICollection
  • 如果需要索引访问,请使用IList

私有实现中,不如使用抽象类型重要:

  • 如果需要访问索引并知道最终大小,请使用T[]List
  • 如果需要访问索引并不知道最终大小,请使用List
  • 如果打算以LIFO模式访问元素,请使用Stack
  • 如果打算以FIFO模式访问元素,请使用Queue
  • 如果需要在列表的开头和结尾访问元素,但不在中间访问,请使用LinkedList
  • 如果不想有重复,请使用HashSet

.NET 4.0提供了一些更多的选择,但以上是基础知识。

0