我已经读过数据结构在文本编辑器中被大量使用。但正如我所看到的,如果我正在使用高级语言编写一个简单的文本编辑器,那么<strong>我就不需要使用任何数据结构。
例如,在Java中,我可以使用Swing的JTextArea
和getText()
方法将我拥有的字符串保存到文件中。基本上,我有一个没有数据结构的简单文本编辑器。
我猜测编辑的数据结构是在JTextArea
本身实现的。它是否正确?或者数据结构是否更低;也就是说,操作系统从键盘接收数据进入缓冲区?那么有人可以帮助我理解数据结构在什么抽象级别实现?
答案 0 :(得分:9)
文本编辑器中的关键数据结构是保存文本的结构。 This article对人们从文本编辑器中选择的结构类型有很好的总结。这篇文章陈旧,但今天仍然非常重要。
非常简单的数据结构(如字符数组)对于某些类型的操作来说往往太慢,比如在已经很长的文档开头插入一个字符,因为最终会移动或复制批次周围的数据。大多数数据结构通过巧妙地将文档划分为块来减少或限制移动的数据量。我链接的文章有详细信息。
使用一些更高级的数据结构的另一个原因是使实现undo和redo等功能变得更加简单。一些数据结构可以很容易地保留已删除的文本,以便通过更改一些指针或偏移量将文档放回到先前的状态。
其他数据结构有助于格式化文本,但文档编辑器(如Word)通常比文本编辑器更多。
JTextArea(以及其他平台上的类似功能)本质上是文本编辑器,它们可能使用我链接的文章中的一个数据结构。
如果您想在该级别编写文本编辑器而不是使用现有文本编辑器,则需要实现多种类型的功能: