早上好
我正在编写一个语言解析器,并且正在寻找用于回滚缓存的最佳结构,该缓存目前执行以下操作:
- 从流中请求新字符时,该字符会添加到缓存中,以防请求回滚。
- 当请求回滚时,返回到缓存中的某个点,以便在请求另一个字符时,它会从那里获取它。
- 找到 token 后,删除回滚缓存中直到当前位置的所有内容。
简而言之,我很想知道您认为哪种数据结构最适合:
- 优先级 1:附加字符(欢迎添加代码点)
- 优先级2:对数据结构做子串(如StringBuilder.delete(...))(或完全清除)
- 优先级 3:能够创建缓存的字符串(例如 StringBuilder.toString())
希望尽快收到您的来信!
最佳答案
如果我是您,对于这种特殊用途以及可能的性能和资源限制,我会从基元实现我自己的缓冲区。我认为调整现有结构更麻烦。当然,如果没有坏处,我会尝试符合众所周知的相关接口(interface),例如 CharSequence
、Appendable
、List
等
关于java - StringBuilder 与绳索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6000476/