2010-05-25 51 views
0

我有一些像關鍵字裏面的數組列表字符串!如何結合java中的數組列表字符串?

一個窗口是ArrayList的字符串關鍵字是大膽 結構窗口:前+關鍵字+ 9個字的9個字後

你可以看到一些窗口overlaping alt text

如何我認爲ArrayList的結合收到這樣的:

alt text

感謝

+1

如果您想回答此問題,請澄清您的問題並接受以前某些問題的答案。 – 2010-05-25 02:39:56

+0

謝謝!我做了,對不起,我不知道! – tiendv 2010-05-25 02:53:52

回答

4

如果你不太擔心性能,簡單的subList/equals匹配是很容易寫:

String[] texts = { 
     "sunset lake michigan michigan alaska water florida " 
     + "peninsula third largest water seventh largest water " 
     + "percentage edit list largest country", 

     "michigan alaska water florida peninsula third largest water " 
     + "seventh largest water percentage edit list largest country " 
     + "subdivision list political", 

     "third largest water seventh largest water percentage edit list " 
     + "largest country subdivision list political geographic " 
     + "subdivisions total edit references" 
    }; 
    List<String> joined = new ArrayList<String>(); 
    for (String text : texts) { 
     List<String> textAsList = Arrays.asList(text.split(" ")); 
     final int N = joined.size(); 
     final int M = textAsList.size(); 
     for (int k = Math.min(N, M); k >= 0; k--) { 
      if (joined.subList(N - k, N).equals(textAsList.subList(0, k))) { 
       joined.addAll(textAsList.subList(k, M)); 
       break; 
      } 
     } 
    } 
    System.out.println(joined); 

此打印:

[sunset, lake, michigan, michigan, alaska, water, florida, 
peninsula, third, largest, water, seventh, largest, water, 
percentage, edit, list, largest, country, subdivision, list, 
political, geographic, subdivisions, total, edit, references] 

該算法是這樣說的:建List<String> joined,給定List<String> textAsList,我們發現joined的「尾部」與textAsList的「頭部」之間的最長subList匹配。

+0

我有一些關鍵字的文檔:我的目標是找到一些textchunks有關鍵字裏面: 要做到這一點有一些步驟: 拳頭:我找到一個窗口是arraylist字符串內容:9個字befor關鍵字+關鍵字+ 9個字後關鍵詞。爲每個關鍵字。 這一步後:我們有關鍵字的一些窗口(ArrayList的字符串),窗口可overlaping 其次我必須結合overlaping windown 這一步之後將有textchunks的內容關鍵字。 這裏的問題是,如果windown不要過度,它仍然會添加到ListString加入。 我有一些關鍵字後jon我必須recive 感謝advandce – tiendv 2010-05-25 08:09:02

+0

http://i250.photobucket.com/albums/gg272/vtienuit/test-1.png – tiendv 2010-05-25 08:10:21

+0

@tiendv:我不知道你在嘗試什麼說。用更多的信息來編輯問題,以幫助每個人的利益。舉例說明不同情況。越多越好。也給運行參數提供界限,因爲最好的算法很複雜,但似乎存在一個簡單而實用的解決方案。 – polygenelubricants 2010-05-25 08:18:44

0

參見How to Use Editor Panes and Text Panes和這些examples使用DefaultHighlighter

附錄:啊,我以爲你只是需要的觀點。對於該模型,請考慮在answer中討論的Knuth–Morris–Pratt algorithm

+0

我沒有提到如何顯示它並將其組合在屏幕中。我的意思是我有一些arrayList字符串像win1,win2,win3。 如何結合勝利,如果它有重疊! 謝謝 – tiendv 2010-05-25 03:18:02

+0

@tiendv:已修正,但它看起來像@ polygenelubricants可能有一個好主意;這個問題讓我想起匹配重疊的基因序列。 – trashgod 2010-05-25 03:41:57

+0

@thrasgod:是的,它的確讓我想起了這一點,而且我正打算建議最先進的算法可能包含後綴樹/後綴數組。 – polygenelubricants 2010-05-25 03:51:46

相關問題