2012-05-16 41 views
1

我需要读取一个字符串数组,其中每个字符串由两个子字符串组成:这些子字符串中的第一个对于数组中的所有字符串都是相同的。如何在不同的字符串之间共享一个子字符串?

public class MyCharSequence implements CharSequence { 

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

    // other CharSequence method 
    // ... 
} 

执行:读取该阵列提供一个ArrayList<CharSequence>参数,所以我需要的CharSequence,可以在其中设置的参考共同子串,当然可变亚序列,在如下所示的方式的方法非常简单,但我想知道是否已经有一个类允许做这样的事情。

+0

你期待从你的'的ArrayList '对象分开'common'和'append' charsequences? –

+1

这是一个'家庭作业'问题,还是现实世界的问题? –

+0

这不是一项家庭作业,但我正在开发的软件的一部分需要计算属于两组字符串的字符串之间的Levenshtein距离。为了构建第一组,我应该获取一个字符串列表并为每个字符串附加一个字符串:因为这个字符串总是相同的,所以遍历整个列表以产生一个新列表是不方便的。出于这些原因,我创建了自己的CharSequence实现......出于好奇,我想知道是否已经有这样的类或更好的选择。 – enzom83

回答

0

这是一种称为绳索的一般数据结构的特殊情况,它将一个(字符或其他)数组的段排列在链表或树中。目标通常是加快数组/字符串中间的插入或删除操作,或以最少的复制来支持非破坏性操作,但您可以通过共享包含感兴趣的共享子字符串的列表/树元素来节省内存。 This article首先简要介绍一下绳索,尽管它比子串共享更关注有效的更新操作。

Java标准库不包括绳索实现,但它是很容易要么写自己或尝试之类的文章中所描述的一个现有的库。库的建议是关于堆栈溢出的主题,所以我不能提供更多的方向。

相关问题