java – StringBuilder与Ropes

早上好,

我正在编写一个语言解析器,我正在寻找用于回滚缓存的最佳结构,目前执行以下操作:

>从流中请求新字符时,如果请求回滚,则将字符添加到缓存中.
>当请求回滚时,返回到缓存中的某个点,以便在请求另一个字符时,它会从那里获取它.
>找到令牌后,将回滚缓存中的所有内容删除到当前位置.

简而言之,我很想知道您认为哪种方式是最佳的数据结构:

>优先级1:追加字符(codePoints是一个受欢迎的补充)
>优先级2:对数据结构执行子字符串(如StringBuilder.delete(…))(或完全清除)
>优先级3:能够创建缓存的字符串(例如StringBuilder.toString())

我希望尽快获得你的消息!

解决方法

如果我是你,对于这种专门的使用以及可能的性能和资源限制,我将从原语实现我自己的缓冲区.我认为适应现有结构更加困难.当然,如果它没有受到伤害,我会尝试遵循众所周知的相关接口,例如CharSequence,Appendable,List等.

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...