如何在不同的字符串之间共享子字符串?

时间:2012-05-16 23:11:23

标签: java string

我需要读取一个字符串数组,其中每个字符串由两个子字符串组成:这些子字符串中的第一个对于数组的所有字符串都是相同的。读取此数组的方法提供了ArrayList<CharSequence>参数,因此我需要一个CharSequence,您可以在其中设置对公共子字符串的引用,当然还有变量子序列,如下所示:

public class MyCharSequence implements CharSequence {

    public MyCharSequence(CharSequence common, CharSequence append) {
        // ...
    }

    // other CharSequence method
    // ...
}

实现非常简单,但我想知道是否已经有一个允许这样做的类。

1 个答案:

答案 0 :(得分:0)

这是一种称为 rope 的通用数据结构的特例,它将数组(字符或其他)的段排列在链表或树中。目标通常是加速数组/字符串中间的插入或删除,或者以最少的复制支持非破坏性操作,但您可以通过共享保存您感兴趣的共享子字符串的列表/树元素来使用它来节省内存。 This article首先简要概述了绳索,但它更关注有效的更新操作,而不是子串共享。

Java标准库不包含绳索实现,但是很容易编写自己的或者尝试像文章中描述的那样的现有库。库建议在Stack Overflow上是偏离主题的,所以我无法提供更多的方向。