2012-05-16 73 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標準庫不包括繩索實現,但它是很容易要麼寫自己或嘗試之類的文章中所描述的一個現有的庫。庫的建議是關於堆棧溢出的主題,所以我不能提供更多的方向。

相關問題