-2
A
回答
3
没有差距。如果你想要一个空位,你自己用null
替换那个位置的值。
大多数情况下,你不需要一个缺口,所以你可以很高兴它为你保持整洁。
但是,一个实际的结果是,如果您打算删除很多的项目在同一个操作中,您可能会发现建立一个新的列表只有那些你没有删除的更快(因为它每次删除后都会在内部移动内容)。
虽然它必须是值得的。记住,如果你遇到了很大的延迟,而不是直接采取这种做法的第一件事。
2
没有缝隙 - 编辑的列表中只有三个项目,和他们有0
,1
和2
指标。
2
5
比方说,我从列表中删除索引为2的Junior。理查德的指数是2还是3还有第二位的差距?
它变成2.没有差距。当你添加一个元素时,这个元素被添加到列表的末尾。
顺便说一下,来吧,这是否很难验证这一点?我的意思是你没有访问编译器或其他东西?
using System;
using System.Linq;
public class Program
{
static void Main()
{
var list = new[] { "Dad", "mam", "Junior", "Richard" }.ToList();
list.RemoveAt(2);
Console.WriteLine(list[2]);
}
}
打印:
Richard
2
如果使用Remove method,那么是的,理查德的指数变得2.您删除的元素字面上从列表中删除,因此索引将被更新。
如果使用Add method,则该项目被追加到列表的末尾,因此所有其他元素的索引都保持不变。
2
它会变成2.列表的索引始终是列表中项目的位置;可以并且永远不会有空白。此外,Count
将始终返回列表中的项目数量,项目的索引始终为0到Count-1
。
相关问题
- 1. 删除索引处的列表元素?
- 2. 为什么从列表中删除元素会引发ConcurrentModificationException?
- 3. 当Hbase表被删除时,数据会发生什么变化?
- 4. 输入元素的值发生了变化:做些什么
- 5. ng-repeat元素的索引在排序时发生变化
- 6. 为什么每次添加新元素时,ArrayList的hashCode()都会发生变化?
- 7. 列表元素被删除时,迭代器结束时会发生什么?
- 8. 删除索引时会发生什么问题?
- 9. 删除表时删除了临时表上的索引吗?
- 10. 我的DIV元素发生了什么?
- 11. 当我添加新数据时,列表项会发生变化...为什么?
- 12. 当我在VS中添加引用时发生了什么?
- 13. 文档发生了什么变化?
- 14. 索引时Numba类型发生变化
- 15. 如何从一个列表中删除元素,如果其他列表包含要删除元素的索引
- 16. 添加和删除元素序列
- 17. 在文档中添加或删除元素时会触发什么事件?
- 18. Python中,删除所有元素的索引列表>ň
- 19. 链接列表 - 删除索引处的元素
- 20. 删除给定索引下的列表元素
- 21. 使用索引列表删除数组中的元素
- 22. 使用ALTER SCHEMA传输表时,索引会发生什么变化?
- 23. UITableView的“原型单元”选项发生了什么变化?
- 24. 添加和删除元素
- 25. 从(整数列表)列表中删除元素时发生Java错误
- 26. 当发送QStandardItemModel itemChanged时发生了什么变化
- 27. 删除给定索引的子元素?
- 28. 为什么在这个代码示例中数组元素发生了变化?
- 29. 删除元素,并从列表中删除下列元素
- 30. Knockout - 当边界值发生变化时什么会触发元素?
很高兴知道null元素可以帮助保持索引的方式。 – Richard77 2012-08-14 17:34:21
如果你想保持差距,你可以考虑使用数组而不是列表。作为一个规则,我鼓励列表在大多数情况下用于数组(比如,你不需要知道它需要多大),但是这听起来比“list-ish”更“阵列化” 。 – 2012-08-14 17:43:44
列表中的对象数量不是预先知道的,因为它取决于来自数据库的行数。它可以是0或很多 – Richard77 2012-08-25 02:50:39