早上好,
我正在编写一个语言解析器,我正在寻找用于回滚缓存的最佳结构,目前执行以下操作:
>从流中请求新字符时,如果请求回滚,则将字符添加到缓存中.
>当请求回滚时,返回到缓存中的某个点,以便在请求另一个字符时,它会从那里获取它.
>找到令牌后,将回滚缓存中的所有内容删除到当前位置.
简而言之,我很想知道您认为哪种方式是最佳的数据结构:
>优先级1:追加字符(codePoints是一个受欢迎的补充)
>优先级2:对数据结构执行子字符串(如StringBuilder.delete(…))(或完全清除)
>优先级3:能够创建缓存的字符串(例如StringBuilder.toString())
我希望尽快获得你的消息!
解决方法
如果我是你,对于这种专门的使用以及可能的性能和资源限制,我将从原语实现我自己的缓冲区.我认为适应现有结构更加困难.当然,如果它没有受到伤害,我会尝试遵循众所周知的相关接口,例如CharSequence,Appendable,List等.