文本编辑LinkedList vs行列表

Cor*_*ory 0 .net c# text editor list

我正在使用C#编写一个文本编辑器,我知道我只是在重新发明轮子,但这是一种学习经验和我想做的事情.

现在我有一个基本的文本文档使用类似于Gap Buffer的东西但是我必须更新我的行缓冲区以在每次对缓冲区进行编辑时保持每行的开始.

我正在寻找创建另一个文本文档,以便使用行列表进行测试并改为编辑每一行.

现在我的问题是使用LinkedList与标准List有什么好处?

Mar*_*ers 5

链接列表将快速插入新行或删除行,并快速向下移动(如果您有双向链接列表,则向上移动)从特定行按少量行移动,并快速移动到文件的开头.要快速移动到文档的末尾,您还需要存储链接列表的末尾.虽然转到特定的行号是相对较慢的,因为你必须从头开始并遍历行,尽管这不应该是一个问题,除非你的文档有很多行.

普通列表可以快速移动到特定行号,但添加或删除除最后行之外的任何行都很慢,因为每次插入或删除行时都需要复制整个缓冲区.

为了编辑大型文档,我更喜欢基于数组的列表上的链表.在任何一种情况下,如果文档包含任何非常长的行,因为字符串是不可变的并且更改每个字符将会很慢,则可能会出现问题.